我必须在表单上单击两次“提交”按钮才能在添加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专家,所以请提前感谢您提供的任何解决方案。
答案 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;
});
}
});
});