jQuery - 多个相同IF条件的简写并同时匹配几个元素?

时间:2012-09-19 15:33:58

标签: jquery jquery-selectors

为jQuery写这个有更短的方法吗?以某种方式捆绑它?看起来非常低效。

if (
   ($('#fname-field').val() == '')  || 
   ($('#lname-field').val() == '')  || 
   ($('#cell-field').val() == '')   || 
   ($('#email-field').val() == '')  || 
   ($('#street-field').val() == '') || 
   ($('#pcode-field').val() == '')  || 
   ($('#city-field').val() == '')   || 
) { // Do something }

我已经四处寻找但尚未找到答案。我不认为以下内容是等效的:

if ($('#fname-field, #lname-field, #cell-field etc...' == '')) { // Do something }

它不是等价的,因为它没有作为一个组运行条件,而是单独运行?正确?

4 个答案:

答案 0 :(得分:2)

您可以提供要验证类的所有元素,然后使用jQuery的每个函数

$('.validate').each(function(index) {
  if ($(this).val() == '')
     alert("empty");
});

http://api.jquery.com/each/

或者,如果您只想做一次警报:

$('.validate').each(function(index) {
  if ($(this).val() == ''){
     alert("empty");
     return false;
  }
});

答案 1 :(得分:0)

你可以这样做..

if ($('#fname-field, #lname-field, #cell-field/*, ..*/')
    .filter(function () { 
         return $(this).val(); 
     }).length)

答案 2 :(得分:0)

var i  = 0; 
$('input').each(function() { 
if($(this).val().length == '0') { 
i++;; 
}  
});
alert("Found " + i + " empty fields");

http://jsfiddle.net/QrkWz/2/

答案 3 :(得分:0)

您可以尝试这种方法

var isCheck = false;
 var elems = $('#fname-field ,#lname-field , #cell-field , #email-field ,#street-field ,#pcode-field , #city-field' );
        $.each(elems , function() {
            if($this).val() == ''){
               isCheck = true;
               return false
            }
        });

        if(isCheck){
           // Your code here
        }
        else{
          //  Do something else
        }