jquery验证强制双击提交为提交到thickbox的表单

时间:2011-10-31 13:27:21

标签: jquery forms validation thickbox

我必须在表单上单击两次“提交”按钮才能在添加jQuery验证后提交它。还有其他帖子,但这些解决方案对我不起作用,因为我的表单提交了一个需要GET方法和某些变量传递的thickbox弹出窗口。我使用的是jquery.validate / 1.8 / jquery.validate.min.js和jquery / 1.5.2 / jquery.min.js。我没有包括规则,因为它只是一个字段(数量)我用类'number'验证以验证是否有值并且它是一个数字。

这是我的代码:

$(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专家,所以请提前感谢您提供的任何解决方案。

1 个答案:

答案 0 :(得分: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; 
        });
 }

}); 

});