0

我使用以下 java 脚本函数进行整数验证。它在 FireFox 中运行良好。但在IE 和 Chrome(不是 Fire Fox)中,允许在该文本框中使用点(。)符号。如何控制不出现点(。)使用 IE 和 Chrome 时文本框中的符号?

javascript函数

$('.intValidate').live('keypress', function(event) {
    if((event.keyCode != 8)&&(event.keyCode != 9)&&(event.keyCode != 37)&&(event.keyCode != 39)&&(event.keyCode != 46)&&(event.which < 48 || event.which > 57)) {
        event.preventDefault();
    }
});

我使用这个类

<input type="text" id="abcd" style="width:30px" maxlength="2" class="intValidate"/>
4

5 回答 5

1

我不认为使用事件键代码进行整数验证是一个可行的选择,我建议您使用正则表达式,或者如果您真的只想使用上述方式阻止,您也可以阻止 keyCode 110 - 在这里查看完整的事件代码

http://www.webonweboff.com/tips/js/event_key_codes.aspx

http://ntt.cc/2008/05/10/over-10-useful-javascript-regular-expression-functions-to-improve-your-web-applications-efficiency.html用于您的正则表达式验证

于 2012-09-25T07:26:39.007 回答
1

在此处修改您的代码。它适用于铬。

于 2012-09-25T07:30:44.080 回答
0

首先,您不应该在键入时进行验证,如在按键中,相反,您应该对输入文本的文本区域的值更改进行验证。之所以如此,是因为:

  • 不同的键盘可能会使用相同的键码发送不同的字符。

  • 除了常规输入,每个系统都有 IME 模式,一些通过 Unicode 代码点插入字符的方法,通过复制和粘贴等等。

通过在控件更改后验证文本将使您免去查找文本插入方式的麻烦。

这是一个类似的例子:How to force maxlength on textArea in HTML using JavaScript

于 2012-09-25T08:07:39.813 回答
0

你也可以这样做:

function isNumber(n) {
    return !isNaN(parseFloat(n)) && isFinite(n);
}
$('.intValidate').live('keyup', function(event) {
    var $this = $(this);
    if (isNumber($this.val())) {
        $this.val(Math.floor($this.val()));
    } else {
        $this.val('')
    }
});
于 2012-09-25T07:41:40.437 回答
0

您应该使用keydown事件而不是keypress jsfiddle

于 2012-09-25T07:29:16.153 回答