2015-12-17 4 views
0

Мне нужно вставить элемент jquery, который выглядит, если все поля ввода формы пусты или нет. Если они пусты или только один из них пуст, проверка не выполняется.Jquery проверьте, все ли пустые пустые перед отправкой формы

я получаю результат с одним полем ввода, при этом и являются кодом:

$(function(){ 
    $('#btnSubmit').on('click',checkEmpty); 
}); 

function checkEmpty(){ 


    var isEmpty=$('#inputId').val(); 
    if (isEmpty == 0 || isEmpty == "") { 
     fail.text('empty field'); 
     return false; 
    }else{ 
     return true; 
    } 
} 

Но все становится не так, когда я пытаюсь то же самое с двумя или более полей Imput:

$(function(){ 
    $('#btnSubmit').on('click',checkEmpty); 
}); 

function checkEmpty(){ 

    var fail=$('#failText'); 

    $("formId input").each(function() { 
     if($.trim($(this).val()) === ""){ 
      fail.text('empty field'); 
      return false; 
     } 
    }); 

} 

В в этом случае текст «пустое поле» появляется только в первом поле идентификатора #failText, а не во втором, а затем форма отправляет меня на относительную страницу php, не останавливая отправку.

+0

Почему бы не добавить 'required' атрибут' элементы ввода. – Tushar

+0

, потому что вы 'возвращаете false' внутри' each' (который прерывает цикл), но не возвращается из функции – billyonecan

+0

wow! это прямо сейчас, биллионекан. И о единственном поле, заполненном текстом? –

ответ

0

Функция checkEmpty не возвращает false. (Вы возвращаете ложным только в пределах вашей каждой петли)

Перепишите вашу функцию checkEmpty на что-то вроде этого:

function checkEmpty(){ 

var fail=$('#failText'); 
var failCount = 0; 

$("formId input").each(function() { 
    if($.trim($(this).val()) === ""){ 
     fail.text('empty field'); 
     failCount++; 
     return false; 
    } 
}); 

if(failCount > 0){ 
return false; 
} 
} 
0

Это потому, что когда вы делаете $('#failText') это только выбирает первый экземпляр этого идентификатора. Если вы хотите выбрать все экземпляры, тогда назначьте класс.

Но В этом случае вы не хотите этого делать, потому что вы хотите показать сообщение «пустое поле» в пустых полях, поэтому вам нужно назначить им другой идентификатор.

Посмотрите на это демо: https://jsfiddle.net/Lpzp2jj5/8/

0

Шипованные ваши ответы, я получаю это решение:

function isEveryInputEmpty() { 
    var failCount = ($('#formId input').length)-1; 
    var txTarget=$('#formId #txTargetResult'); 

    $('#formId input').each(function() { 

     if ($(this).val() === '') { 
      txTarget.text('empty field'); 
      failCount++; 
      return false; 
     } 
    }); 

отлично работает для меня

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