只允许输入一次输入数字

时间:2013-08-05 00:59:36

标签: javascript jquery arrays validation input

有没有办法使用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子句永远不会触发。

2 个答案:

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

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

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