2013-08-21 91 views
0

我使用jQuery表單驗證庫:JQuery的表單驗證衝突

jQuery的validate.js

當用戶提交我滑下,其具有必須chekced複選框股利形式爲了繼續:

if(!$('#agreeConfirm').is(':checked')){ 

    alert('Please tick to agree to our terms and conditions'); 
    $('.termsAgree').slideDown(); 
    return true; 

} 

這工作在很大程度上沒有提交表單,並顯示警報與顯示覆選框的slideDown。但是如果選擇一個選項還沒有被用戶選擇的表單提交(雖然「這是必須填寫」不出現。如果我在上面的正確的行爲觀察註釋掉我行的消息。

我的驗證碼結構如下:提前

$("form#register").validate({ 

rules:{ 

     name:{ 
      required: true, 
      number: false 
     }, 

     ..... 

     add1:{ 
     required: true 
     }  

} 

}); 

$('form#register').submit(function(){ 

    ... 

    if(!$('#agreeConfirm').is(':checked')){ 

     alert('Please tick to agree to our terms and conditions'); 
     $('.termsAgree').slideDown(); 
     return false; 

    } 

} 

感謝

+0

這將是最好的還包括相關的HTML,使這個完整而簡潔的例子。 – Sparky

回答

0

您可以添加一條規則中字段的形式驗證方法的複選框看this

+0

謝謝,但我不認爲這有助於我的情況,我想在驗證失敗時滑動一個div ...我認爲我不能在驗證方法內執行此操作 –

+1

在'errorPlacement:function(error,element ){}'方法你可以識別元素,如果它是複選框元素,那麼你可以滾動DIV。這肯定會解決你的問題! – deepakb

0

你不應該使用。整個separ使用jQuery Validate插件時,處理函數使用submit。這是多餘的,也是導致衝突的原因。該插件已經自動地「處理」的submit事件......

的插件有,你會使用任何需要的時候有效的形式提交給做一個submitHandler回調函數。

更多的東西像這樣...

$("form#register").validate({ 
    rules:{ 
     name:{ 
      required: true, 
      number: false 
     }, 

     ..... 

     add1:{ 
      required: true 
     } 
    }, 
    submitHandler: function(form) { 
     // something to do when the form is valid 
     if(!$('#agreeConfirm').is(':checked')){ 
      alert('Please tick to agree to our terms and conditions'); 
      $('.termsAgree').slideDown(); 
      form.submit(); 
     }; 
     return false; 
    }, 
    invalidHandler: function(event, validator) { 
     // something to do when validation fails 
    } 
}); 

查看所有呼選項:http://jqueryvalidation.org/validate