2014-10-15 4 views
1

Это может быть просто, но у меня возникают трудности. Я использую обязательный атрибут во всех полях .um_frm, а затем проверяю, не все ли пустые поля. Моя проблема заключается в том, что вместо проверки всех полей он проходит, даже если заполнено одно поле. Как я могу убедиться, что все поля заполнены?Проверьте, пусто ли несколько текстовых полей jQuery

$('#um_ok').on('click', function() { 
     $('.um_frm').attr('required','required'); 
     var value=$.trim($(".um_frm").val()); 
     if(value.length === 0){ 
      //proceed... 
     } 
}); 

Я также попытался это, но не был suiccessful

$('#um_ok').on('click', function() { 
     $('.um_frm').attr('required','required'); 
     if($.trim($(".um_frm").val()) === ""){ 
      //proceed... 
     } 
}); 
+1

Пожалуйста, сделайте [jsfiddle] (http://jsfiddle.net). – razvanz

ответ

4

Используйте фильтр, чтобы увидеть, если какой-либо поле пустым (длина не truthy, то есть 0, следовательно !):

$('#um_ok').on('click', function() { 
     $('.um_frm').attr('required','required'); 

     var anyBlank = $(".um_frm").filter(function(){ 
      return !$.trim($(this).val()).length; 
     }).length; 

     // If not any blanks... 
     if(!anyBlank){ 
      //proceed... 
     } 
}); 

Update: (спасибо @George)

Поскольку required является подлинным элементом HTML-элемента, а не только атрибутом, вы должны использовать prop (который затем может принимать более читаемое логическое значение в качестве состояния включения/выключения):

 $('.um_frm').prop('required', true); 

Это имеет преимущество при создании атрибута уборщика required без значения (вместо required="required" и т. Д.).

+0

Красивые !! Благодарю. – Fergoso

+3

+1 Голосование за ответ, который действительно заслуживает этого. Обратите внимание на использование '.prop()' для установки таких свойств, как 'required' (: – George

+0

@TrueBlueAussie У меня нет ссылки, кроме [этого вопроса] (http://stackoverflow.com/a/5876747/1612146). логически логически, нам не нужен требуемый атрибут *, мы хотим изменить свойство *, потому что это то, что вызывает требуемое поведение. – George

0

Надеется, что это будет делать

var left_blank =$('#um_ok').on('click', function() { 
        $(".um_frm").filter(function() { 
         return !$.trim($(this).val()).length; 
        }).length; 
       }); 
if(!left_blank){ 
    //proceed 
} 
+3

Подождите, как он отвечает на вопрос? –

+3

После этого вы должны либо добавить соответствующее 'if' заявление, либо объяснить OP, что здесь происходит. Как бы то ни было, этот код ничего не делает, кроме оценки значения «истина» или «ложь» ... – George

+0

Я отредактировал свой ответ. Теперь, пожалуйста, проверьте –

1

РАБОТА FIDDLE

Используйте следующие

-
$('#um_ok').on('click', function() { 
    var status = true; 
    $('.um_frm').each(function() { 
     if ($.trim($(this).val()) == '') { 
      status = false; 
     } 
    }); 
    if (status) { 
     alert("all r ok"); 
    } else { 
     alert("sumthng missing"); 
    } 
}); 
+2

Это будет предупреждать/действовать раз для каждой пустой записи (довольно раздражает) ... Лучше, возможно, вернуть общий результат, а затем сообщить об этом? –

+0

ok ...... thnxx !. –

+0

Выглядит хорошо, но ответ – Fergoso

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