2012-05-29 49 views
2

我有以下兩個HTML元素的一種形式:jQuery的重新驗證文本字段時複選框改變

<input type="text" name="vrm" id="vrm" size="15" maxlength="15" value="" /> 
<input type="checkbox" id="foreign_registration" name="foreign_registration" value="yes" /> 

及以下的jQuery驗證規則(使用這裏的驗證插件:http://bassistance.de/jquery-plugins/jquery-plugin-validation/):

vrm: { 
     remote: { 
      url: "/json/vrm-validate.php", 
      data: { 
       foreign_registration: function() { 
       return $('#foreign_registration').is(':checked'); 
       } 
      } 
      } 
     } 

遠程腳本依賴於這兩個字段,因爲在文本字段上執行的驗證取決於是否檢查外部註冊。

問題是,如果我在文本字段中輸入了某些內容,然後更改了複選框,則不會重新運行驗證規則。我認爲這是因爲驗證規則僅附加到文本字段,所以只有在更改時纔會運行。

有沒有辦法說'這兩個元素是相關的,所以如果他們中的任何一個都改變了,假定應該再次檢查文本字段規則'?我不想將任何驗證規則附加到複選框,因爲它不需要在客戶端進行驗證,並且由遠程腳本執行的驗證規則太複雜,無法在jQuery中實現。

回答

0

你可以調用上的複選框的變化的驗證功能

$(':checkbox').change(function(){ 
    $('form').validate(); 
}); 
+0

雖然不會重新驗證整個表單嗎?我只是真的想驗證文本字段,特別是隨着時間的推移表單可能會增長。 – pwaring

+0

是的,它會做後快速搜索我發現這個http://stackoverflow.com/q/2738925/801241它可能會幫助你想做什麼。 – Qpirate

3

這讓我通過電子郵件發送的備選答案是:

isOI是我的複選框,項目是我的文本框是當點擊複選框時,我需要重新驗證 。

$("#isOI").change(function() { 
    var item = $("#Item"); 
    item.data("previousValue", null).valid(); 
}); 

顯然,現有的答案並沒有爲這個人工作。