如何限制用户只允许数字和可选的两位十进制数

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

标签: javascript jquery validation

我需要将用户输入限制为仅允许整数或两位十进制数,限制范围为099999.99

尝试使用脚本,但在所有情况下均未成功。 此外,这也应该适用于移动操作系统。

     $('#txtamount').keydown(function (event) {

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

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

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

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

尝试使用以下内容但不限制特殊字符。

http://jsfiddle.net/jquerydeveloper/LmHkD/

1 个答案:

答案 0 :(得分:1)

不是使用键码检测,最好使用正则表达式和onchange,而不是keydown。

$(document).ready(function () {
    $('input[name="number"]').change(function (e) {
        var valueEntered = $(this).val()
        var regex = /^[0-9]{1,5}(\.[0-9]{2})?$/
        if (!regex.test(valueEntered)){
            $(this).val(''); //set value to nil, consider also display message
        }
    });
});

我还将输入类型修改为数字,而不是文本:

<input name="number" type="number" value=" " />

JSFiddle:http://jsfiddle.net/LmHkD/259/

请注意,这只是让您入门,您可能需要更新正确方案的正则表达式