Проверка jQuery: отправка формы только после проверки полей

Я использую приведенный ниже код для проверки моей формы. Проверка проходит отлично, но у меня возникла проблема при отправке формы. И проблема в том, что форма отправляется в файл php каждый раз, когда нажимается кнопка «Отправить форму», независимо от того, не проверена ли форма.

Как я могу это исправить?

Я изучал submitHandler, но не знаю, как использовать его с ajax и сериализовать.

Большое спасибо!

<script>
$(document).ready(function(){
   $("#form").validate({
      rules: {
         name: {
           required: true
         },
         lname: {
           required: true
         }

      },
      messages: {
         name: {
           required: "* required"
         },
         lname: {
           required: "* required"
         }
      }

   }); //end validate

  $('#form').submit(function() {

    theUrl = 'form.php';

     var params = $(this).serialize();
    $.ajax ({
            type: "POST",
            url: theUrl,
            data: params,
            processData:false,
            async:false,
            success: function(result) {

                //if (data != "") alert (data);
            }
    });
    //return false;
  }); //end submit

});    //end document ready 



</script>

person ADM    schedule 05.12.2011    source источник


Ответы (1)


Вам нужно поместить код запроса AJAX в параметр submitHandler плагина проверки. В настоящее время запрос AJAX выполняется для события submit() параллельно любому результату проверки. Попробуй это:

$(document).ready(function(){
    $("#form").validate({
        rules: {
            name: { required: true },
            lname: { required: true }
        },
        messages: {
            name: { required: "* required" },
            lname: { required: "* required" }
        },
        submitHandler: function(form) {
            theUrl = 'form.php';
            var params = $(form).serialize();

            $.ajax ({
                type: "POST",
                url: theUrl,
                data: params,
                processData: false,
                async: false,
                success: function(result) {
                    //if (data != "") alert (data);
                }
            });
        }
    }); //end validate
});

Дополнительная информация о параметре submitHandler.

person Rory McCrossan    schedule 05.12.2011