2013-08-05 206 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