javascript多输入文本框验证

时间:2009-07-13 13:38:08

标签: javascript

我在表单上有'n'个文本框,在用户在文本框中输入值后,我需要在其他文本框中验证它不是重复文件。

前:

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

对于这个例子,它应警告说“1”已输入两次。 让我知道该怎么做。

4 个答案:

答案 0 :(得分:1)

如果您已在数组中包含文本框,请遍历该数组并查找重复值。这不是最有效的方式(它是O(n 2 )来计算)来解决问题(字典会更好),但对于少量文本盒子是最简单的。

function TestForDuplicates( var Textboxes )
{
    for( tb in Textboxes )
    {
        for( tb2 in Textboxes )
        {
            if( tb != tb2 ) // ignore the same textbox...
            {
                if( tb.value == tb2.value )
                    alert( "The value " + tb.value + " appears more than once." );
            }
        }
    }
}

如果阵列中有超过10个文本框,另一种方法是构建每个值出现次数的映射:

function FindDuplicates( var Textboxes )
{
    var valueList = new Array();

    for( tb in Textboxes )
        valueList.push( tb.value );        

    valueList.sort(); // sort values so that duplicates are adjacent

    if( valueList.length > 1 ) 
    {
        for( i = 0; i < valueList.length-1; i++ )
             if( valueList[i] == valueList[i+1] )
                 alert( "The value " + valueList[i] + " appears more than once." );
    }
}

答案 1 :(得分:0)

function testValues ()
{

    var inputs = document.getElementsByTagName ("input");

    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)
              return false;
        }

          answers.push(inputs[ii].value);
     }



    }

return true;

}

答案 2 :(得分:0)

假设您有要在文本框中读取的代码并将它们存储在数组中

var validator = function(textbox){
  var values = [];
  for(i=0;i<textbox.length;i+=1){
    if (values.indexOf(textbox[i]) === -1){
     values[i] = textbox[i];
   }else{
      return false;
   }
  }
  return true;
}

这应该是非常高效的,因为它只会发现重复

答案 3 :(得分:0)

使用PrototypeJS Hash对象非常简单。

 function validate() {
      var textVals = new Hash();
      $$('input[type=text]').each( function(elem) {
          if(textVals.get(elem.value) == undefined) {
              textVals.set(elem.value, elem.id);
          }else {
              alert('Duplicate text value found (' + elem.id + '=' + textVals.get(elem.value) + ')');
          }
      });
  }

此函数迭代当前页面上的所有文本输入。如果之前从未见过某个值,则会将其保存到哈希值。如果该值已经在哈希值中,则我们有重复。

在此示例中,它显示具有重复值的两个元素的ID。