JavaScript的多输入文本框验证

时间:2009-07-14 06:28:03

标签: javascript

我在表单上有n个文本框。用户在文本框中输入值后,我需要检查它是否与任何其他文本框重复。例如:

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

但只有前两个文本框验证。

让我知道如何解决这个问题。

3 个答案:

答案 0 :(得分:1)

尝试在嵌套循环中为if语句添加括号:

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

            }

否则循环将始终在第一次迭代时返回false。

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

答案 2 :(得分: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>