2009-07-14 18 views
-2

フォーム上にテキストボックスの数がn個あります。ユーザーがテキストボックスに値を入力した後、他のテキストボックスの複製ではないことを確認する必要があります。例:javascript-multiple-input-textbox-validation

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

「1」が2回入力されたことを警告する必要があります。

私は次のことを試してみました:

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

しかし、最初の2つのだけのテキストボックスを検証します。

この問題をどのように解決できるか教えてください。 if文のためのブラケットを追加すること

+0

あなたは必ず名前、analog_idorder []ことを行っています、実際にはすべてのテキストボックスで同じですか?アラートを試みる(inputs.length); 2行目には、見つかったテキストボックスの数が表示されます。また、「テキスト」のスペルが間違っている場合は、型パラメータとしてテキストボックスとして表示されますが、最初の条件を満たすことはできません。最初の 'if'の後にアラート(ii)を試してください。 –

+0

重複:http://stackoverflow.com/questions/1119495/javascript-multiple-input-textbox-validation – peirix

+0

ああ、私は最初の4つの回答もあまりにも....? – seth

答えて

1

てみ落ち着いたループで:エルス

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

      } 

ループは常に最初の繰り返しでfalseを返します。あなたは、すべてあなたが見てきた値を格納する連想配列を使用して行っているループを取り除くことができ

+0

ありがとうBaversjo私は試してみよう – Murugesh

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>