0

我正在尝试仅为字符 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();
        }
    }
4

2 回答 2

2

你应该使用||而不是&&

您还可以使用正则表达式[^.%'].it 匹配除., %,之外的任何字符'

于 2012-10-23T15:29:20.287 回答
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();
    }
}
于 2012-10-23T15:34:16.110 回答