2012-08-01 84 views
0

我有一個腳本驗證表單(使用jQuery Validate),然後提交數據。它目前運行良好,但現在我需要添加一個複選框,並且我不清楚如何使用jQuery/ajax提交值。我是否需要包含諸如$('#checkBox').attr('checked');之類的內容?如果是這樣,我如何將它傳遞給ajax?jquery驗證 - 點擊「提交」檢查複選框

此外,當我點擊「提交」,沒有完成表格,複選框自動檢查自己。這是爲什麼發生?

的jquery:

<script> 
$(document).ready(function(){ 
    $("#formid").validate({ 
     rules: { 
      name: "required", 
      email: { 
       required: true, 
       email:  true 
      }, 
      mobile: { 
       required: true, 
       minlength: 10 
      }, 
      news: { 
       required: false, 
      } 
     }, 
     messages: { 
      name: "Please enter your name", 
      email: "Please enter a valid email address", 
      mobile: "Please enter your mobile number" 
     }, 
     submitHandler: function() { 
       var name  = $('#name').attr('value'); 
       var email  = $('#email').attr('value'); 
       var mobile  = $('#mobile').attr('value'); 
       var news  = $('#news').attr('value'); 

       $.ajax({ 
        type: "POST", 
        url: "ajax.php", 
        data: $("#formid").serialize(), 
        success: function(){ 
         $('form#formid').hide(); 
         $('div.success').fadeIn(); 
        } 
       }); 
      return false; 
     } 
    }); 
}); 
</script> 

形式:

<form id="formid" method="post"> 
    <fieldset> 
     <div> 
      <label for="name">Name</label> 
      <input type="text" id="name" name="name" class="required" /> 
     </div> 

     <div> 
      <label for="email">Email</label> 
      <input type="text" id="email" name="email" class="required" /> 
     </div> 

     <div> 
      <label for="mobile">Mobile</label> 
      <input type="text" id="mobile" name="mobile" class="required" /> 
     </div> 
     <label for="news"><p>Please don&rsquo;t send me ongoing news</p> 
     <input type="checkbox" id="news" name="news" value="No" /> 

    <label for="submit1" id="submit"><span>&nbsp;</span> 
     <input id="submit1" type="submit" name="submit" value="Submit"/> 
     </label> 
    </fieldset> 
</form> 

回答

1

您有一個未封閉的label標記,瀏覽器正在擴展爲包含checkboxsubmit按鈕。

<label for="news"> 
    <p>Please don&rsquo;t send me ongoing news</p> 
    <input type="checkbox" id="news" name="news" value="No" /> 
<!-- should close news label here -->  
<label for="submit1" id="submit"> 
    <span>&nbsp;</span> 
    <input id="submit1" type="submit" name="submit" value="Submit"/> 
</label> 

這是造成兩者checkboxsubmit充當如果點擊其中一方時,他們被點擊。

修復你的標記應該可以解決你的問題。

+0

它的確如此。輝煌:-)非常感謝!多麼愚蠢的錯誤...... – circey 2012-08-01 02:31:06

+0

@circey我們都做到了;) – 2012-08-01 02:32:07

0

這先前已經討論here。與this demo的鏈接也應該有所幫助。

請注意,jquery serialize將只包含複選框的值,如果它被選中。