Проверка JQuery вызывает двойной щелчок на кнопку «Отправить» для формы, которая отправляется в Thickbox - PullRequest
0 голосов
/ 31 октября 2011

Мне нужно дважды щелкнуть кнопку отправки в моей форме, чтобы отправить ее после добавления проверки jQuery.Есть и другие сообщения по этому поводу, но эти решения не работают для меня, так как моя форма отправляется всплывающему окну «толстый ящик», для которого требуется метод GET и определенные переменные для передачи.Я использую jquery.validate / 1.8 / jquery.validate.min.js и jquery / 1.5.2 / jquery.min.js.Я не включаю правила, так как это только одно поле (количество), которое я проверяю с помощью класса 'номер', чтобы убедиться, что есть значение и это число.

Вот мой код:

$(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 Ответ

2 голосов
/ 15 июня 2012

Ваш код содержит ошибку "слишком много рекурсии": $("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; 
        });
 }

}); 

});
...