За последние 24 часа нас посетили 26258 программистов и 1814 роботов. Сейчас ищет 1061 программист ...

Проверка полей при submit

Тема в разделе "JavaScript и AJAX", создана пользователем TigerZaka, 17 май 2014.

  1. TigerZaka

    TigerZaka Активный пользователь

    С нами с:
    16 сен 2011
    Сообщения:
    189
    Симпатии:
    1
    Перед submit'ом хочу проверить поля:
    Код (Text):
    1.  
    2. $('#addForm').submit(function() {
    3.     $(".need").each(function(){
    4.         if(!$(this).val()) {
    5.             $(this).css('border-color', 'red');
    6.             return false;
    7.         }
    8.     });
    9. });
    Объясните, почему выделяя пустое поле, скрипт все равно продолжает выполняться несмотря на return false?
     
  2. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    return завершает текущую анонимную функцию, но потом в each запускается новая
     
  3. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    пишут, что return false должен останавливать each
     
  4. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    У меня всё работает:
    Код (Text):
    1. $('#addForm').submit(function(f) {
    2.     $(".need").each(function(){
    3.             if(!$(this).val()) {
    4.                     $(this).css('border-color', 'red');
    5.                     f.preventDefault();
    6.                     return false;
    7.             }
    8.     });
    9. });
     
  5. TigerZaka

    TigerZaka Активный пользователь

    С нами с:
    16 сен 2011
    Сообщения:
    189
    Симпатии:
    1
    Код (Text):
    1.  
    2. f.preventDefault();
    помогло
    p.s. получается браузер лезет не в свое дело? ))
     
  6. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    "return false" тут не остановит отправку формы. Браузер честно работает.
    А мы как бы принудительно останавливаем при определенном условии (поле пустое).
     
  7. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Так вопрос был не про цикл. Вот оно чо, михалыч...
     
  8. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Думаю лучше наверно будет у формы вызывать
    Код (PHP):
    1. onsubmit="return $.forms(this)" 
    А сама функция будет возвращать false.
    Код (PHP):
    1. $.forms=fucntion(obj) {
    2.     if('object'===typeof obj) {
    3.         $('input,textarea',obj).each(function() {
    4.             //...
    5.         });
    6.     }
    7. return false;
    8. }; 
     
  9. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    А еще можно юзать атрибут pattern у инпутов и доверить валидацию браузеру. Все равно на стороне сервера придется проверять, хочешь ты или нет.