2013-08-05 162 views
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 
} 

但新的阵列(“数字”)将无法得到用户输入填充,所以如果从句永远不会触发。

回答

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()); 
    } 
}); 

如果用户不得不单击以添加新号码,那会更好。否则,这将是非常烦人的。

+0

这适用于一些小的变化 - '$('#inputBox')。keypress(function(event){if(event.keyCode == 13){ if($ .inArray($(this).val ),数字)> -1){'如果在数字的第一个条目中触发了'> -1',现在没问题,谢谢你的帮助。 – sideroxylon

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); 
}); 
+0

感谢您的快速回复 - 但仍然失败。如果我在if检查后立即运行alert(''+ names +'')',它就是空的。 – sideroxylon

+0

用另一种方法更新。 – doogle