2009-07-14 48 views
-2

我有n窗體上的文本框數量。用戶在文本框中輸入一個值後,我需要檢查它是否與任何其他文本框不重複。例如:javascript-multiple-input-textbox-validation

Textbox[0] : 1 
Textbox[1] : 2 
Textbox[2] : 3 
Textbox[4] : 1 

它應該警告說'1'已被輸入兩次。

我試過如下:

function findDuplicates (obj) { 
    var inputs = document.getElementsByName('analog_idorder[]'); 
    var answers= new Array(); 

    for(var ii = 0; ii < inputs.length; ii++) { 
     if(inputs[ii].type == 'text') { 
      for(var jj = 0; jj < answers.length; jj++) { 
       if(answers[jj] == inputs[ii].value) 
        alert('Duplicate Id_order number'); 
       return false; 
      } 
      answers.push(inputs[ii].value); 
     } 
    } 
    return true; 
} 

但只有前兩個文本框驗證。

讓我知道我該如何解決這個問題。在坐落循環if語句

+0

是否已進行了確定名稱,analog_idorder [],對於所有文本框實際上是相同的?嘗試alert(inputs.length);在第2行,查看它找到了多少個文本框。另外,如果你說的「文本」拼寫錯誤,作爲類型參數,它們仍然會顯示爲文本框,但不符合第一條標準。在第一個'if'之後嘗試alert(ii)。 – 2009-07-14 06:39:03

+0

重複:http://stackoverflow.com/questions/1119495/javascript-multiple-input-textbox-validation – peirix 2009-07-14 06:48:21

回答

1

嘗試增加括號:

  for(var jj = 0; jj < answers.length; jj++){ 
       if(answers[jj] == inputs[ii].value){ 
        alert('Duplicate Id_order number'); 
        return false; 
       } 

      } 

否則循環將總是在第一次迭代返回false。

1

你可以擺脫所有的循環,你通過使用關聯數組來存儲你見過值做:

var answers = document.getElementsByName("analog_iorder[]"); 
var seen = {}; 

function checkForDupes() { 
    for (var i=0;i<answers.length;i++) { 
    if (seen[ answers[i].value ]) { 
     alert("Duplicate "); 
     return false; 
    } 
    seen[ answers[i].value ] = true; 
    } 
    return true; 
} 
1
Text 1: <input type="text" id="txt1" onblur="chkValue('txt1');" /><br/> 
Text 2: <input type="text" id="txt2" onblur="chkValue('txt2');" /><br/> 
Text 3: <input type="text" id="txt3" onblur="chkValue('txt3');" /><br/> 
Text 4: <input type="text" id="txt4" onblur="chkValue('txt4');" /><br/> 
Text 5: <input type="text" id="txt5" onblur="chkValue('txt5');" /><br/> 
Text 6: <input type="text" id="txt6" onblur="chkValue('txt6');" /><br/> 
Text 7: <input type="text" id="txt7" onblur="chkValue('txt7');" /><br/> 
Text 8: <input type="text" id="txt8" onblur="chkValue('txt8');" /><br/> 
Text 9: <input type="text" id="txt9" onblur="chkValue('txt9');" /><br/> 
Text 10: <input type="text" id="txt10" onblur="chkValue('txt10');" /><br/> 

<script type="text/javascript"> 
var vals=new Object(); 

function chkValue(a) 
{ 
    var t=document.getElementById(a); 

    if(vals[t.value]) 
    { 
     if(vals[t.value] != a) 
     { 
      alert("You have already entered ["+t.value+"]"); 
      t.value=""; 
     } 
    } 
    else 
    { 
     vals[t.value] = a; 
    } 
} 

</script>