2013-04-01 62 views
4

我试图验证其与jQuery验证两个相同名字的输入..验证其与jQuery验证名称相同的多个文本框仅验证第一输入

<script src=' 
      http://code.jquery.com/jquery-latest.min.js '></script> 
      <script src='http://ajax.aspnetcdn.com/ajax/jquery.validate/1.11.1/jquery.validate.min.js'></script> 
      <script> 
      $(document).ready(function(){ 

      $('#frm').validate(); 

      $("[name=inp_text]").each(function(){ 
      $(this).rules("add", { 
      required: true, 
      checkValue: true 
      }); 
      }); 

       $.validator.addMethod("checkValue", function(value, element) { 
       var response = ((value > 0)&&(value <= 100))||((value == 'test1')||(value =='test2')); 
       return response; 
       }, "invalid value"); 

      }) 

      </script> 


      <form id='frm' method='post'> 
      <input type='text' name='inp_text'/><br> 
       <input type='text' name='inp_text'/><br> 
      <input type='submit' name=''/> 
      </frm> 

但是当我运行这段代码只验证第一输入和第二输入被使用<input type='text' name='inp_text[]'/><br>根本无视

我也试过,但仍然没有工作。

我应该怎么改...?

在此先感谢

回答

12

“我想,以验证其与jQuery 验证两个相同名字的投入......”

<input type='text' name='inp_text'/> 
<input type='text' name='inp_text'/> 

“但是当我运行这段代码它只验证第一输入和第二 输入被简单地忽略”

您不能有两个input字段type="text"name相同或该插件将无法正常工作。该name属性必须是唯一的。 (一个例外name是唯一的,是的复选框或单选输入“分组”将共享相同的name作为相应的提交是数据的单个点,但是,name仍然必须是唯一的复选框的各分组和无线电元件)

“我应该怎么改变......?

使每个name特有的属性。

<input type='text' name='inp_text[1]'/> 
<input type='text' name='inp_text[2]'/> 

然后使用 “开始与” 选择,^= ...

$("[name^=inp_text]").each(function() { 
    $(this).rules("add", { 
     required: true, 
     checkValue: true 
    }); 
}); 

工作演示:http://jsfiddle.net/PgLh3/

注意:您还可以通过id使用rules('add')方法时目标元素,但是对于这种情况,没有什么不能解决的,因为插件仍需要独特name每个input元素。

+0

非常感谢..你能解释我为什么它不工作时,我使用inp_txt [] .... whith这个名字应该变得独特我想..或者我错了这个假设..? – alwaysLearn

+0

@dreamCoder,因为'inp_text []'和'inp_text []'完全一样。它会如何“变得独特”?我想我不完全明白你在问什么。 – Sparky

+0

文档中没有'unique'这样的东西。 –

-1

是,jQuery验证只能验证一次出现。 您对文本框使用不同的名称。 OR 您可以使用相同的名称,但不同的ID。 并根据id进行检查。 。

$( “#myForm会”)验证({规则:{ #id_of_field:{ 要求:真实,校验值:真 }}});

+0

诚然,jQuery验证插件不会不工作时两个字段包含相同的名称;只有第一个字段会被验证。然而,在'.validate()'中用'id'声明规则是无效的,绝对会破坏一切。请参阅:http://jsfiddle.net/tpg7M – Sparky

+0

对不起,亲爱的,你可以用下面的数组名称$( '#myForm的')验证({ 规则:{ '数据[]':{要求:真实, minlength:1} } }); –

-1

朋友们!

为了验证文本框/复选框/名称相同 选择使用下面这是为我工作的罚款。

这里ctryId'是选择框中的名称。

function validateCountry(){ 
    inp = document.getElementsByTagName("select"); 
    for (var i = 0; i < inp.length; ++i) { 
     if (inp[i].name =="ctryId" && inp[i].value==''){ 
      alert('plesae select a country!'); 
       return false; 
      } 
     } 
    return true; 
} 

这里MINVAL'是文本框

function validateMinimumVal(){ 
    inp = document.getElementsByTagName("TEXT"); 
    for (var i = 0; i < inp.length; ++i) { 
     if (inp[i].name =="minVal" && inp[i].value==''){ 
      alert('plesae Add a MINIMUM VALUE!!'); 
       return false; 
      } 
     } 
    return true; 
} 

希望这有助于的名字! 贾根

+0

这并不回答预期的问题。 – ptCoder

0

添加像等规则或消息如下所示的配置中jquery.validate.js

multipleInputSharedName: { 
     inp_text: true 
    } 

更改代码 方法名称:元素

替换以下

if (this.name in rulesCache || !validator.objectLength($(this).rules())) { 
       return false; 
      } 

具有以下

if ((!validator.settings.multipleInputSharedName[this.name] && this.name in rulesCache) || !validator.objectLength($(this).rules())) { 
       return false; 
      }