2011-10-31 180 views
0

我必須在我的表單上點擊兩次提交按鈕才能在添加jQuery驗證後提交它。還有其他的帖子關於這個,但這些解決方案不適合我,因爲我的表單提交到需要GET方法和某些變量傳遞的thickbox彈出窗口。我正在使用jquery.validate/1.8/jquery.validate.min.js和jquery/1.5.2/jquery.min.js。我不包括規則,因爲它只是一個字段(數量),我正在使用類「數字」進行驗證,以驗證是否有值並且是數字。jquery驗證強制雙擊提交表單提交給thickbox

這裏是我的代碼:

$(document).ready(function(){ 
// validate the form when it is submitted 
    $("form.cart_form").validate({ 


    //adding submitHandler results in having to click twice 
    submitHandler: function(form) { 

     $("form.cart_form").submit(function() { 
     var title = ""; 
     var productID = $("select[name=product_id]", this).val(); 
     var quantity = $("input[name=quantity]", this).val(); 
     var url = "../cart/add-to-cart.php?product_id=" + productID + "&quantity=" + quantity + "&TB_iframe=true&height=300&width=600"; 
     tb_show(title, url, false); 
     // submit the form 
     // return false to prevent normal browser submit & page navigation 
     return false; 
      }); 
    } 

    }); 

}); 

我絕不是一個jQuery的專家,所以預先感謝您對您能提供任何解決方案。

+0

我也不是專家,但我不認爲你需要同時驗證和提交? – OptimusCrime

+0

當我刪除$(「form.cart_form」)。submit(function(){...});它是否正確地在thickbox iframe中打開,但是,變量不會被傳遞? –

回答

2

您的代碼在太多的遞歸錯誤:$("form.cart_form").submit()觸發另一輪驗證,導致另一個調用submitHandler,並瞧,遞歸。用form.submit()代替

$(document).ready(function(){ 
// validate the form when it is submitted 
$("form.cart_form").validate({ 


//adding submitHandler results in having to click twice 
submitHandler: function(form) { 

    form.submit(function() { 
    var title = ""; 
    var productID = $("select[name=product_id]", this).val(); 
    var quantity = $("input[name=quantity]", this).val(); 
    var url = "../cart/add-to-cart.php?product_id=" + productID + "&quantity=" + quantity + "&TB_iframe=true&height=300&width=600"; 
    tb_show(title, url, false); 
    // submit the form 
    // return false to prevent normal browser submit & page navigation 
    return false; 
     }); 
} 

}); 

});