2010-11-16 2 views
3

Я отрываю свои волосы здесь, пытаясь получить подтверждение jquery, чтобы играть красиво с моей формой.jquery validation not stopping form от отправки

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

Мой код:

//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 ....

Любая помощь будет оценена! Благодарю.

Update

//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'); 
    } 
} 
}); 
+1

please post ajax_event.php – Catfish

+1

Похоже, вы полностью обходите плагин. Вы выполняете запрос ajax отдельно от проверки. (Отправка формы на клик вместо отправки) –

+0

Я знаю, что работает ajax_event.php - другой jquery в одном HTML и js-файле взаимодействует с ним, используя ту же самую функцию $ .ajax. – Matt

ответ

4

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

Я в конечном итоге упаковка Аякса вызова часть моего оригинального кода в следующем коде:

if($('#form_scheduleEvent').valid() == true){ 
    //Process ajax request... 
} 
return false; 
5

Вы должны переместить ваш AJAX отправить вызов быть отстреливается от подавать обратного вызова в валидации плагина:

$('#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!');} 
    } 
+0

Спасибо за ваш ответ. Я тоже пробовал этот код, но имел ту же ошибку, что и в моем ответе Джеймсу. – Matt

1

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

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

+1

Знал, я должен был ответить! –

+0

Спасибо за ваш ответ! – Matt

2

Вы вызываете заявку на форму вне проверки. Вам, вероятно, понадобится примерно следующее:

$('#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 
     } 
    } 
}); 
+0

Спасибо за ваш ответ! У меня есть точный код, как показано здесь, за исключением $ .ajax. Я заменил его предупреждением ('test'); потому что я все еще не могу заставить это работать. Форма проверяется (сообщения об ошибках отображаются, если поле не заполнено), но он просто отправляет страницу без отображения окна предупреждения ... больше идей? – Matt

+0

Я изменил форму «Хандлер» на «успех». –

4

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

+0

правильный! в моем случае виновником было 'minLength': с капиталом 'L'. должен был быть 'minlength' –

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

}); 

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