2013-04-01 81 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; 
      }