2012-05-30 25 views
1

我有我驗證使用這個插件形式:http://bassistance.de/jquery-plugins/jquery-plugin-validation/結合.toggle()和表單驗證

我決定將字段添加到這個形式,如果一個鏈接被點擊,使用.toggle()將出現。

這裏是形式:

<form id="identification" action="Test.php" method="post"> 
    <fieldset> 
     <legend>Identification</legend> 
     <p> 
      <label for="firstName">First name</label> 
      <input id="firstName" type="text" name="firstName" class="required"/> 
     </p> 
     <p> 
      <label for="lastName">Last name</label> 
      <input id="lastName" type="text" name="lastName" class="required"/> 
     </p> 
     <p> 
      <label for="email">E-mail address</label> 
      <input id="email" type="text" name="email" class="required email"/> 
     </p> 
     <div class="hiddenFields"> 
      <p> 
       <label for="zip">Zip code</label> 
       <input id="zip" type="text" name="zip" class="required zip"/> 
      </p> 
      <p> 
       <label for="city">City</label> 
       <input id="city" type="text" name="city" class="required"/> 
      </p>   
     </div> 
     <p class="showFields"><a class="toggle" href="#">Click here</a> for more info</p> 
    </fieldset> 
    <p class="submit"><input type="submit" value="Submit"/></p> 
</form> 

.hiddenFields格設置爲我的CSS display: none;

這裏是驗證腳本:

$(document).ready(function(){ 
    $("#identification").validate({ 
     rules: { 
       "zip": { digits:true, minlength:5, maxlength:5 } 
     } 
    }); 

    jQuery.extend(jQuery.validator.messages, { 
     required: "This field is needed.", 
     email: "Please enter a valid e-mail address.", 
     digits,minlength,maxlength: "Please enter a valid zip code.", 
     minlength: "Please enter a valid zip code.", 
     maxlength: "Please enter a valid zip code." 
    }); 
}); 

這裏是切換腳本:

$(document).ready(function(){ 
    $("a.toggle").click(function(e){ 
     e.preventDefault(); 
     $(".hiddenFields").toggle("fast"); 
    }); 
}); 

現在,一切工作正常,而不.hiddenFields股利和無.toggle(),但是當我嘗試添加它,驗證不再有效,我不明白爲什麼。

當隱藏字段和不隱藏字段時,如何驗證此表單?它目前在這兩種情況下都不起作用。

感謝您的幫助。

+1

AFAIK jQuery的沒有內置的驗證。你使用哪個插件? – crdx

+0

你能否在jsfiddle.net上放置一個可重現你問題的功能性示例? – Cristy

+0

[你可以用這個作爲出發點](http://jsfiddle.net/KhPsw/)。這似乎工作。也許我誤解了這個問題。 – crdx

回答

1

Here it is on jsFiddle

你有一個流氓digits,minlength,導致語法錯誤:

jQuery.extend(jQuery.validator.messages, { 
    required: "This field is needed.", 
    email: "Please enter a valid e-mail address.", 
    digits,minlength,maxlength: "Please enter a valid zip code.", 
    minlength: "Please enter a valid zip code.", 
    maxlength: "Please enter a valid zip code." 
}); 

你也有得到maxlength兩次。

它更改爲這將解決它:

jQuery.extend(jQuery.validator.messages, { 
    required: "This field is needed.", 
    email: "Please enter a valid e-mail address.", 
    minlength: "Please enter a valid zip code.", 
    maxlength: "Please enter a valid zip code." 
}); 
+0

這絕對是一個複製/粘貼錯誤,我甚至沒有注意到它。謝謝你的幫助 ! – morgi

+0

@morgi我不知道你使用哪個瀏覽器,但是如果你在Firefox或者IE瀏覽器(按F12顯示)或者Firefox中的[Firebug擴展名](http:// http://getfirebug.com)加載開發者工具(也可以按F12顯示)並查看控制檯選項卡,您可以檢查發生的任何JavaScript錯誤。 – crdx