2011-10-31 130 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; 
     }); 
} 

}); 

});