Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.05.2014, 18:47
Аспирант
Отправить личное сообщение для alexmixaylov Посмотреть профиль Найти все сообщения от alexmixaylov
 
Регистрация: 14.09.2013
Сообщений: 70

запрет отправки аякс формы с валидацией
Хочу переделать обработчик формы
чтобы страничка не перегружалась

сделал с использованием 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();
				
				}
			});
		});
});
Ответить с цитированием
  #2 (permalink)  
Старый 12.05.2014, 19:10
Профессор
Отправить личное сообщение для depp Посмотреть профиль Найти все сообщения от depp
 
Регистрация: 22.04.2014
Сообщений: 151

$('input[name=name]', this).val()

а что тут делает this? для чего он тут?
Ответить с цитированием
  #3 (permalink)  
Старый 12.05.2014, 19:20
Аспирант
Отправить личное сообщение для alexmixaylov Посмотреть профиль Найти все сообщения от alexmixaylov
 
Регистрация: 14.09.2013
Сообщений: 70

не смотрел как то в эту сторону
форма не моя, сейчас переделаю
var nameform = $.trim($('input[name=name]').val());
            if(nameform.length < 3) {
                alert('Укажите корректные ФИО!');
                return false;
            }
Ответить с цитированием
  #4 (permalink)  
Старый 13.05.2014, 09:08
Профессор
Отправить личное сообщение для krasovsky Посмотреть профиль Найти все сообщения от krasovsky
 
Регистрация: 21.12.2012
Сообщений: 869

Сообщение от depp Посмотреть сообщение
$('input[name=name]', this).val()

а что тут делает this? для чего он тут?
Вероятно this тут указывает на form, тоесть собрать коллекцию элементов input[name=name] - непосредственных потомков form

Открой консоль и прямо в ней выполни $('input[name=name]', 'YourFormID').val()
И посмотри что напишет
Ответить с цитированием
  #5 (permalink)  
Старый 13.05.2014, 10:46
Аспирант
Отправить личное сообщение для alexmixaylov Посмотреть профиль Найти все сообщения от alexmixaylov
 
Регистрация: 14.09.2013
Сообщений: 70

Спасибо все сделал
вставил скрипт обработчика в скрипт валидации
$(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();
        });
    });
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать задержку отправки формы на javascript? Akimserg Общие вопросы Javascript 12 19.10.2015 13:15
Как сделать disabled кнопки во время отправки формы? Bad Request Events/DOM/Window 7 16.04.2014 13:49
Не могу разобрать механизм отправки формы kreon Angular.js 3 19.12.2013 13:04
Запрет отправки формы. Garroshek Общие вопросы Javascript 5 12.09.2013 06:29
Запрет отправки формы Джэксон Общие вопросы Javascript 3 27.05.2012 21:25