1

这是我仅用于验证数值的代码,它有效。

但是,当我按下该tab键时,我会收到一条警报消息。

$j('#ctl00_cphMain_txtQuantity').keypress(function (event) {
    if ((event.which != 46 || $j(this).val().indexOf('.') != -1) && (event.which < 48 || event.which > 57) && (event.which !=8)  ) {
        event.preventDefault();
        alert("Please Enter Valid Quantity");
    }
4

5 回答 5

1

我的建议是使用regex而不是键码,因为您需要考虑任意数量的键码。怎么样CTRL?或者SHIFT

尝试这个:

$("#foo").keyup(function() {
    var $input = $(this);
    var regex = /^\d+$/;

    if (!regex.test($input.val())) {
        alert("Please enter numeric values only");
        $input.val($input.val().replace(/\D/, ''));
    }
});

示例小提琴

于 2012-12-13T08:52:03.673 回答
0

使用 keydown 而不是 keypress 而不是 keydown。

样本:

        $('#test').keydown(function (event) {
            if (((event.which != 46) ||
                 ($(this).val().indexOf('.') != -1))
                && ((event.which < 48)
                    || (event.which > 57))
                && (event.which != 8)) {
                event.preventDefault();
                alert("Please Enter Valid Quantity");
            }
        });​
于 2012-12-13T08:53:45.837 回答
0

在这些地方调整您的代码:

$j('#ctl00_cphMain_txtQuantity').keypress(function (event) {
if ((event.which != 46 ||  
    $j(this).val().indexOf('.') != -1) && 
    (event.which < 48 || event.which > 57) && 
    (event.which !=8)  ) {
//              ---^----------------------------9 is the tabkey     
        event.preventDefault(); // <------------remove this
        alert("Please Enter Valid Quantity");
}

我在这个小提琴中做了一些事情,当其他按键事件发生但不是 Tab 键时会收到警报:http: //jsfiddle.net/8YNFw/

你可以在这里找到键码:http: //www.cambiaresearch.com/articles/15/javascript-char-codes-key-codes

于 2012-12-13T08:59:59.390 回答
0

如果您在 if 子句中添加 event.keyCode!=9 它应该可以工作。

于 2012-12-13T08:49:11.850 回答
0

FireFox 中的正则表达式存在问题。它可能不适用于制表键测试。我使用了以下代码并在所有浏览器上工作

jQuery(document).on( "keypress", ".element1, .element2", function(e) {
        var regExp = new RegExp("^[a-zA-Z \b]*$");
        var key = String.fromCharCode(!e.charCode ? e.which : e.charCode);

        if (e.keyCode != 9) { // For FireFox
            if (!regExp.test(key)) {
                e.preventDefault();
                return false;
            }
        }

    });
于 2017-06-23T09:00:34.963 回答