允许输入文本框中的制表符和其他键

时间:2015-04-21 15:00:46

标签: javascript jquery validation

以下是我的javascript代码,限制用户关注:

1)只允许数字和最多两个小数点。

它还限制用户使用制表符,退格键,删除键,左箭头键和右箭头键。

我尝试添加条件event.which!= 8/9/37/38但没有成功。

以下是代码:

$('#txtprice').keypress(function (event) {
    if ((event.which != 46 || $(this).val().indexOf('.') != -1) && (event.which < 48 || event.which > 57)) {
        event.preventDefault();
    }

    var text = $(this).val();

    if ((text.indexOf('.') != -1) && (text.substring(text.indexOf('.')).length > 2)) {
        event.preventDefault();
    }
});

任何人都可以在这里纠正我。

EDITED:修改如下,但无效。

    $('#txtprice').keypress(function (event) {

                if (event.which == 8 || event.which == 9 || event.which == 37 || event.which == 38) {
                    event.preventDefault();
                    return;
                }

                if ((event.which != 46 || $(this).val().indexOf('.') != -1) && (event.which < 48 || event.which > 57)) {
                    event.preventDefault();
                }

                var text = $(this).val();

                if ((text.indexOf('.') != -1) && (text.substring(text.indexOf('.')).length > 2)) {
                    event.preventDefault();
                }
            });

由于

1 个答案:

答案 0 :(得分:0)

你只需要允许你想要的东西,而不是确定你不想要的东西。通过确定keyCode是句点(190)还是48到57之间,这很容易。

function validateNum(e) {
    var elem = document.getElementById("txtprice");
    if (e.keyCode >= 48 && e.keyCode <= 57 || e.keyCode == 190) {
        var txt = elem.value;
        if (e.keyCode == 190 && txt.match(new RegExp('\\.','g')).length > 1) {
            e.preventDefault();
        }
    } else {
        e.preventDefault();   
    }
}

这是一个有效的js小提琴:http://jsfiddle.net/e72uqvbv/

更新:我想念了期间情况请求,我已经更新了我的答案。