Сначало проверить форму а потом отправить

Тема в разделе "JavaScript", создана пользователем designf, 15 мар 2014.

Статус темы:
Закрыта.
Модераторы: ZiX
  1. designf

    designf Постоялец

    Регистр.:
    24 май 2009
    Сообщения:
    105
    Симпатии:
    16
    Требуется помощь.

    Суть следующая. Есть форма с двумя обязательными полями для заполнения. Если делать без ajax то все нормально, скрипт проверяет на заполнение. И если не заполнено, то не дает пойти на отправку.

    Если использовать ajax то форма улетает. А мне нужно чтобы проверило и если поля не пустые, то отправить на выполнение.

    Код

    Код:
    <script type="text/javascript">
        $(function() {
    
        $('#send_req').validate({
            rules: {
                    name: 'required',
                    phone: 'required'
                },
            submitHandler: function(form) {
                $(form).find('input[type="submit"]').attr('disabled', true);
                $(form).ajaxSubmit();
            }
        });
           
        $('#send_req').click(function() {
            $.ajax({
                type: "POST",
                url: 'send_request.php',
                data: {id: id },
                cache: false,
                beforeSend: function() { $('#send_req').html('<img src="../images/go.gif">'); },
                success: function(html) { $('#send_req').html(html); }
            });
            $("#help_content").hide("slow");
         });
    
            $('#help_close').click(function(){
        $('#help_content').slideUp();
        });
        $('#help_link').click(function(){
            $('#help_content').css('paddingBottom', '10px');
            $('#help_content').slideDown(700);
            $('#help_content').animate({paddingBottom:'0'}, 300);
        });
    });
    </script>
    Т.е. проверяем форму #send_req с помощью плагина validate но это не помогает.
     
  2. Genk0

    Genk0 Инквизитор из раздела J!

    Moderator
    Регистр.:
    2 июн 2010
    Сообщения:
    1.645
    Симпатии:
    1.349
    if($('#send_req').valid()){ отправляем форму }
     
    designf нравится это.
  3. designf

    designf Постоялец

    Регистр.:
    24 май 2009
    Сообщения:
    105
    Симпатии:
    16
    Спасибо. А куда ставить?

    Если так

    Код:
        if($('#send_req').valid()) {   
        $('#send_req').click(function() {
            $.ajax({
                type: "POST",
                url: 'includes/ajax/send_request.php',
                data: {id: <? echo $f['selector'];?> },
                cache: false,
                beforeSend: function() { $('#send_req').html('<img src="../images/go.gif">'); },
                success: function(html) { $('#send_req').html(html); }
            });
            $("#help_content").hide("slow");
         });
         }
    То ajax не работает идет обычная отправка.
     
  4. jDony

    jDony Создатель

    Регистр.:
    25 янв 2014
    Сообщения:
    41
    Симпатии:
    40
    Вообще я такие штуки делаю так:
    Код:
    $("#form").on('submit', function (e) {
      e.preventDefault();
    
      if (Form.validate($(this))) {
        $.ajax({}); // Отправляем
      }
      else {
        // Сообщаем об ошибках
      }
    }
    Так же в html5 появился аттрибут required у тега input. Он не даст отправить форму если поля с required будут пустые.
     
    Sorcus, latteo и designf нравится это.
  5. hjet

    hjet Создатель

    Регистр.:
    5 июн 2012
    Сообщения:
    23
    Симпатии:
    7
    если мы живем в северной корее и у нас за спиной стоит автоматчик, то делаем так - используем required для обязательных полей + pattern в input + через js проверяем required и pattern + дублированная проверка на стороне сервера полученных данных... в итоге вражеский шпиён из южной корее не сможет обойти вашу форму в связи с тем, что объем кода вы увеличили на 2500%

    upd: pattern'ы - обычные регулярки, к примеру номер телефона с кодом (###) ###-#### будет выглядеть вот так:
    <input type="tel" id="phone" pattern="([0-9]{3}) [0-9]{3}-[0-9]{4}">
    оставьте работу браузера - браузеру, если он это умеет делать. он умеет проверять формы на валидность, если ему сообщить условия. не надо ставить к нему за спину автоматчика с доп. 25кг кода брони
     
    Последнее редактирование: 23 мар 2014
Статус темы:
Закрыта.