我正在尝试仅为字符0-9找到/使用正则表达式。如果可能的话,我也试图让用户使用他们的普通键(退格键,左右箭头,退格键)。
另外,我想停下来。 (期间),%(百分比)和'(单引号)。
这是我到目前为止所做的,但它并没有阻止上述三个问题:
function onlyNumbers(evt) {
var theEvent = evt || window.event;
var key = theEvent.keyCode || theEvent.which;
key = String.fromCharCode( key );
var regex = /[0-9]/;
//alert(theEvent.keyCode)
if( !regex.test(key) && theEvent.keyCode!='8' && theEvent.keyCode!='46'&& theEvent.keyCode!='37' && theEvent.keyCode!='39') {//keyCode8 = backspace
theEvent.returnValue = false;
if(theEvent.preventDefault) theEvent.preventDefault();
}
}
答案 0 :(得分:2)
您应该使用||
代替&&
您还可以使用正则表达式[^.%']
。它匹配除.
,%
,'
答案 1 :(得分:1)
我会使用一组允许的keyCodes并检查:
function onlyNumbers(evt) {
var theEvent = evt || window.event;
var key = theEvent.keyCode || theEvent.which;
// 0-9, backspace, left and right arrows
var allowedKeyCodes = [48,49,50,51,52,53,54,55,56,57,8,37,39];
if(allowedKeyCodes.indexOf(key) === -1) {
theEvent.returnValue = false;
if(theEvent.preventDefault) theEvent.preventDefault();
}
}