Tab键在jQuery中不起作用

时间:2012-12-13 08:36:01

标签: jquery

这是我的验证数值的代码,无效。

但是当我按标签键时,我收到一条警告信息。

$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");
    }

5 个答案:

答案 0 :(得分: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/, ''));
    }
});

Example fiddle

答案 1 :(得分:0)

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

答案 2 :(得分: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");
            }
        });​

答案 3 :(得分: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");
}

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

您可以在此处找到密钥代码:http://www.cambiaresearch.com/articles/15/javascript-char-codes-key-codes

答案 4 :(得分:0)

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

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;
            }
        }

    });