2012-05-28 5 views
0

Я хочу показать предупреждающее сообщение, если пользователь не заполнил всю форму, но, похоже, не работает так, как я хочу. Метод jQuery .each собирает только данные из первого поля ввода. Если я оставлю первое поле пустым, он работает правильно, но если я заполню только первое поле и оставлю другие поля пустыми, это показывает успех, который является неправильным.jquery else if инструкция не работает

// send message on click 
$("#submit").click(function() { 

    // store values 
    var data = $("#form").serialize(); 

    $(":input, textarea").each(function() { 

     // if empty show warning 
     if ($(this).val() === "") { 
      $(".message-fail").fadeIn(500); 
     } 

     // if not empty send message 
     else if (!$(this).val()) { 
       $.ajax({ 
        type: "POST", 
        url: "mail.php", 
        data: data, 
        success: function() { 
         $(".message-sent").fadeIn(500); 
        } 
       }); 
     } 

    }); 

}); 
+2

Вы действительно хотите сделать ajax-вызов для каждого текстового поля? –

ответ

1

Вы можете сделать следующий процесс:

НО Я ДУМАЮ ВАМ НЕ НУЖНО AJAX ДЛЯ КАЖДОЙ ОБЛАСТИ

if ($.trim(this.value).length) { // if value exists 
    $(".message-fail").fadeIn(500); 
} else { // if no value exists, here no need to elseif 
    $.ajax({ 
     type: "POST", 
     url: "mail.php", 
     data: data, 
     success: function() { 
      $(".message-sent").fadeIn(500); 
     } 
    }); 
} 

Объяснение:

$.trim(this.value) -> проверить значение существует

или можно также использовать (первый из них лучше)

$.trim($(this).val()).length -> проверяет значение существует

+0

'trim' не поддерживается во всех браузерах ... (IE <9, Opera <10.5 ...) [source-mdn] (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/Trim) – gdoron

+0

@gdoron, что я должен использовать? – thecodeparadox

+0

jQuery, как вы писали в последней строке вашего ответа ... – gdoron

0

в этой строке else if (!$(this).val()) есть неправильное состояние есть !$(this).val() пожалуйста, сделать это исправить это будет работать ....

0

вам нужно поместить «else» за пределы «each», потому что первый действительный ввод будет публиковать форму :) сделать переменную флага, сделать проверки внутри каждого ... но лучше использовать простой цикл. и после проверки проверки сделайте еще одну проверку своего флага и опубликуйте, если это нормально

Смежные вопросы