我使用 jquery 在 JavaScript 中编写一些逻辑,其中我必须根据 REGEX 模式检查输入内容,例如:
"^[a-zA-Z0-9_]*$" //Alpha-numeric and _
逻辑差不多完成了,我只是在过滤功能键 DEL 时遇到了一点问题,
我的逻辑是这样的:
var FunctionsKey = new Array(8, 9, 13, 16, 35, 36, 37, 39, 46);
function keypressValidation(key) {
if (config.regexExp != null) {
if ($.inArray(key, FunctionsKey) != -1) {
return true;
}
else {
var keyChar = String.fromCharCode(key);
return RegexCheck(keyChar);
}
}
return true;
}
如果 KeyCode 是数组中的其中之一,我就让它通过,如果不是,我就获取该字符并将其与 REGEX 进行比较。
问题是:在某些浏览器中 DEL 和“.” (句号)具有相同的密钥代码 46。
那么是否有更好的逻辑来过滤功能键,或者我必须为这种情况编写一个条件,也许从数组中删除 46 并尝试将其转换为 char ,如果是 (.) 如果不是,则让它转到正则表达式函数让它过去吗?
另一个问题是某些浏览器中是否有更多共享密钥代码?
编辑:我建议的解决方案不起作用,因为无论用户按哪个键(DEL 或句点),我总是得到 (.) 作为 CHAR 至少在 OPERA 和 FF =(.