запрет отправки аякс формы с валидацией
Хочу переделать обработчик формы
чтобы страничка не перегружалась сделал с использованием ajax, отправляет корректно только одна проблема с валидацией ругается на неправильно заполненные поля но форму все равно отправляет а нужно чтобы не отправляла до тех пор, пока не будет корректно заполнена форма <input class="button btn-order order-btn" type="submit" value="Заказать">
$(document).ready(function() {
var sel_phone = $('input[name=phone]');
sel_phone.mask('+38 (000) 000-00-00');
if (sel_phone.val().length < 3) sel_phone.val('+38');
sel_phone.on('focus, focusout', function () {
if ($(this).val().length < 3) $(this).val('+38');
});
$('form').submit(function() {
$('input[name=name]', this).val($.trim($('input[name=name]', this).val()));
if(!$('input[name=name]', this).val()) {
alert('Укажите корректные ФИО!');
return false;
}
if(!$('input[name=phone]', this).val() || $('input[name=phone]', this).val().length < 18) {
alert('Укажите корректный телефон!');
return false;
}
return true;
});
$('a.order-btn').click(function(valida) {
$(this).closest('form').submit();
return false;
});
});
а это обработчик
$(function(){
$('form').submit(function(e){
e.preventDefault();
var m_method=$(this).attr('method');
var m_action=$(this).attr('action');
var m_data=$(this).serialize();
$.ajax({
type: m_method,
url: m_action,
data: m_data,
success: function(result){
$('#result').show();
}
});
});
});
|
$('input[name=name]', this).val()
а что тут делает this? для чего он тут? |
не смотрел как то в эту сторону
форма не моя, сейчас переделаю
var nameform = $.trim($('input[name=name]').val());
if(nameform.length < 3) {
alert('Укажите корректные ФИО!');
return false;
}
|
Цитата:
Открой консоль и прямо в ней выполни $('input[name=name]', 'YourFormID').val() И посмотри что напишет |
Спасибо все сделал
вставил скрипт обработчика в скрипт валидации
$(document).ready(function() {
var sel_phone = $('input[name=phone]');
sel_phone.mask('+38 (000) 000-00-00');
if (sel_phone.val().length < 3) sel_phone.val('+38');
sel_phone.on('focus, focusout', function () {
if ($(this).val().length < 3) $(this).val('+38');
});
$('form').submit(function() {
event.preventDefault();
$('input[name=name]', this).val($.trim($('input[name=name]', this).val()));
if(!$('input[name=name]', this).val()) {
alert('Укажите корректные ФИО!');
rstopImmediatePropagation();
}
if(!$('input[name=phone]', this).val() || $('input[name=phone]', this).val().length < 19) {
alert('Укажите корректный телефон!');
stopImmediatePropagation();
}
//вставляем функцию отправки формы
var all_data=$(this).serialize();//получаем данные из формы
alert(all_data);
$.ajax({
type: "POST",
url: "send.php",
data: all_data,
success: function(result){
$('#result').show();//показываем окно
}
});
//конец функции
});
$('a.order-btn').click(function() {
$(this).closest('form').submit();
rstopImmediatePropagation();
});
});
|
| Часовой пояс GMT +3, время: 10:49. |