2

我花了几个小时试图找到一种方法来做到这一点,但没有成功。我想添加一个 Keyup/KeyPress 事件以仅接受 2 - 1827 之间的值。我正在使用 aspx 输入框,这就是我所拥有的。

$('#Field_TXT').keyup(function () {
            var regex = /[^2-9]|[^1-9][^0-9]|[^1-9][^0-9][^0-9]|[^1][^0-8][^0-2][^0-7]/;
            var myregexp = /^([1-9]|1[0-9]|1[0-9][0-9]|[1-9][0-9][0-9]|1[0-8][0-2][0-7])$/g;


            if (!this.value.match(myregexp)) {
                this.value = this.value.replace(regex, '');
            }
        });

如果我使用正则表达式作为我的表达式,那么当用户输入 1 -19 时,它不起作用,因为表达式匹配 false 并且值被替换为 ''。但是,如果我使用第二个正则表达式,那么使用将能够输入 1。

我还查看了发布的其他示例。 HTML 文本输入只允许数字输入

提前致谢。

4

1 回答 1

0

正则表达式似乎是实现这一目标的最难方法。以下确保条目既是数字又在范围内。在那之后你如何处理这个领域取决于你......

$('#Field_TXT').keyup(function() {
    var val = $(this).val();
    var is_numeric = /^\d+$/gi.test(val);
    if (is_numeric) {
        var val = parseInt(val);
        var within_range = (val >= 2 && val <= 1827);
    }
    if  (!is_numeric || !within_range) {
        $(this).val(/* Insert whatever value you want here */);
    }
});
于 2013-10-23T21:03:45.533 回答