0

有没有办法使用 javascript/jquery 来防止用户在输入框中输入相同的数字两次?用户可以输入任意数量的数字(一次一个),但如果他们再次尝试输入相同的数字,我需要提醒用户/采取其他措施。我试过创建一个数组:

 function history() {
 var numbers = [];
 numbers.push(document.getElementById('inputBox').value);
 }  

然后运行:

 var n = document.getElementById('inputBox').value;
 if ($.inArray(n, numbers)> -1) {
   // alert, do something
 }

但是新数组('numbers')永远不会被用户输入填充,所以 if 子句永远不会触发。

4

2 回答 2

1

大概是这样的吧?我假设您正在使用jQuery,因为$.inArray在您的代码中。

var numbers = [];
$('#inputBox').change(function () {
    if ($.inArray($(this).val(), numbers)) {
        // Alert the user/take other action
    } else {
        // Otherwise, add it to the array of numbers
        numbers.push($(this).val());
    }
});

如果有一个用户必须单击以添加新号码的按钮会更好。否则,会很烦人。

于 2013-08-05T03:46:36.437 回答
1

看起来您的numbers变量的作用域是history()函数,因此numbers正在设置的变量实例只能由history()函数访问。此代码将完成您在没有全局numbers变量的情况下尝试执行的操作,并通过拦截和取消键事件来防止输入任何重复的数字。

$("#inputBox").on("keydown", function(e) {
    var numbers = $(this).val();
    var c = String.fromCharCode(e.keyCode);
    return ~numbers.indexOf(c);
});
于 2013-08-05T01:05:57.983 回答