Проверка JQuery не мешает отправке формы - PullRequest
3 голосов
/ 16 ноября 2010

Я тут рву свои волосы, пытаясь заставить jquery-валидатор хорошо играть с моей формой.

Валидация не работает.Форма просто подает себя на страницу.Я могу кратко увидеть сообщения об ошибках проверки, появляющиеся перед отправкой страницы ...

Мой код:

//HTML form
<form id="form_scheduleEvent" name="form_scheduleEvent">
  <label for="name">Name:</label><input class="short" type="text" name="name" id="name" />
  <label for="address">Address:</label><input type="text" name="address" id="address" />
  <label for="phone">Phone:</label><input type="text" name="phone" id="phone" />
  <label for="comments">Comments:</label><textarea name="comments" id="comments" /></textarea>
  <input type="submit" id="submitRequest" value="Add"/>
</form>


//jquery
//Validation rules
$('#form_scheduleEvent').validate({
rules: {
    name : {required: true, maxlength: 45},
    address : {required: true, maxlength: 45},
    phone : "required"
}
});


$('#submitRequest').click(function(){
   $.ajax({
       type: "POST",
       url: "common/ajax_event.php",
       data: formSerialized,
       timeout:3000,
       error:function(){alert('Error');},
       success: function() {alert('It worked!');}
  });

 return false;
});

Я попытался обновить до последней версии jquery и jquery.validation...

Любая помощь будет оценена!Спасибо.

Обновление

//The validation is working, but I can't even get the alert to show....
$('#form_scheduleEvent').validate({
 rules: {
   name : {required: true, maxlength: 45}, 
   address : {required: true, maxlength: 45},
   phone : "required",
   submitHandler: function(){
     alert('test');
   }
 }
});

Ответы [ 7 ]

5 голосов
/ 16 ноября 2010

Вы должны переместить ваш AJAX-вызов на отправку, чтобы он был отправлен обратным вызовом отправки в плагине validate:

$('#form_scheduleEvent').validate({
rules: {
    name : {required: true, maxlength: 45},
    address : {required: true, maxlength: 45},
    phone : "required",
    submitHandler: function(form) { DoSubmit(); }
}
});


function DoSubmit(){
   $.ajax({
       type: "POST",
       url: "common/ajax_event.php",
       data: formSerialized,
       timeout:3000,
       error:function(){alert('Error');},
       success: function() {alert('It worked!');}
  }
4 голосов
/ 18 июля 2014

Это может произойти, если вы добавите правило, у которого нет подходящего метода, посмотрите и проголосуйте за мой отчет об ошибке. https://github.com/jzaefferer/jquery-validation/issues/1212

4 голосов
/ 18 ноября 2010

Спасибо всем за ответ.

В итоге я завернул часть вызова ajax моего исходного кода в следующий код:

if($('#form_scheduleEvent').valid() == true){
  //Process ajax request...
}
return false;
2 голосов
/ 16 ноября 2010

Вы вызываете отправку формы вне проверки.Вы, вероятно, захотите что-то вроде этого:

$('#form_scheduleEvent').validate({
rules: {
    name : {required: true, maxlength: 45},
    address : {required: true, maxlength: 45},
    phone : "required",
    success: function() {
      $.ajax({
        type: "POST",
        url: "common/ajax_event.php",
        data: formSerialized,
        timeout:3000
      }
    }
});
1 голос
/ 30 июля 2014

Я согласен с Джошом Рибаковым. См. Ошибку на: https://github.com/jzaefferer/jquery-validation/issues/1212

1 голос
/ 16 ноября 2010

Как Grillz сказал, что вы отправляете и проверяете отдельно, вы должны явно вызывать валидацию в вашем событии click, чтобы выполнить его.

Или наоборот, как показывает Пэдди! ;)

0 голосов
/ 27 августа 2014
$('#form_scheduleEvent').validate({
 rules: {
   name : {required: true, maxlength: 45}, 
   address : {required: true, maxlength: 45},
   phone : "required"
   },
   submitHandler: function(){
     alert('test');
   }

});

Обработчик отправки должен быть вне правила. : -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...