【发布时间】:2012-01-12 04:55:24
【问题描述】:
我有一个 JavaScript 函数,它可以验证输入字段并防止用户输入任何不符合条件的内容。该函数基于event.keyCode。
我正在尝试修改函数以使用 RegExp 并验证不是“每个字符”而是“每个整个输入”,以便它执行相同的操作,但条件不同:
- 仅限数字
- 允许十进制“。”或“,”
这是当前形式的函数,使用event.keyCode:
function isNumeric(evt, alertDIVid, alertMsg) {
var charCode = (evt.which) ? evt.which : event.keyCode
if (charCode >= 48 && charCode <= 57) {
document.getElementById(alertDIVid).innerHTML = '';
return true;
}
else {
document.getElementById(alertDIVid).innerHTML = alertMsg;
return false;
}
}
document.getElementById('AMNT').onkeypress = function(event) {
event = event || window.event;
return isNumeric(event, 'numericalert', 'Numeric values only!')
};
【问题讨论】:
-
这是your previous question 的几乎完全相同的副本,除了添加的
,作为小数分隔符。还是我错过了什么? -
类似,但是如果条件不匹配我不知道如何拒绝输入...
-
你为什么要使用 RegEx 呢?创建一个允许的字符数组并针对它测试每个新字符似乎非常简单和合乎逻辑。使用 RegEx 来完成这项任务就是用破坏球拍苍蝇
-
@Codemonkey:使用 RegEx,我可以控制和拒绝像“38.9.2”这样的输入,但不能使用允许的字符...
-
提示正确方向:
keypress事件在字段填充之前触发。如果要验证输入字段的值,则必须使用keyup事件。keyup事件的一个缺点(或优势?)是它只被触发一次(当按键被释放时),而keypress事件也会在每次按键时触发。
标签: javascript regex