2015-07-20 72 views
0

我有4個輸入字段和一個公共類名。我用它來檢查它是否空白。獲取一個空白輸入字段的ID

var blank = $('.fourFields').filter(function(){ 
    return !$.trim($(this).val()).length; 
}).length; 
if(!blank){ 
    //do something 
} else { 
    //how do I use addClass() to the blank input fields here? 
} 

我的問題是如何獲得空白輸入字段的ID?

+0

$(this).attr('id') – ItayB

+1

@ ItayB - 或者更高效:'this.id'。 – RobG

+0

@ RobG-你是對的;-)謝謝 – ItayB

回答

3

您可以使用.MAP()來獲取輸入IDS,其值的數組是空白

var ids = $('.fourFields').map(function(){ 
    return $.trim($(this).val()) ? undefined : this.id; 
}).get(); 

如果要添加一個類,那麼一個更合適的解決方案將使用。每()

var ids = []; 
$('.fourFields').each(function() { 
    var blank = $.trim(this.value); 
    if (blank) { 
     ids.push(this.id); 
    } 
    $(this).toggleClass('required', blank); 
}); 
+0

看起來不錯。謝謝。 :)我怎樣才能使用'addClass()'到每個空白輸入字段? – Bekki

+0

看我的編輯。對於那個很抱歉。 – Bekki

+1

@Bekki你可以在循環中自己做....如果你不想爲其他任何目的使用id數組,那麼就把它刪除吧...... –

0

的ID將被this.id(注意,沒有$)

0

作爲非jQuery的替代方法,可以使用得到的ID陣列:

var ids = Array.prototype.filter.call(document.querySelectorAll('input'), 
    function(el){return /^\s*$/.test(el.value)} 
).reduce(function(p,c){p.push(c.id); return p;},[]); 

和也做(使用jQuery)類部分:

var ids = Array.prototype.filter.call(document.querySelectorAll('input'), 
    function(el){return /^\s*$/.test(el.value)} 
).reduce(function(p,c){ 
    $(c).addClass('whatever'); 
    p.push(c.id); 
    return p; 
},[]); 
0

爲了讓空白的輸入的ID的字段,你可以使用下面的代碼:

$(".fourFields").filter(function(){ 
     if($(this).val() === '') 
     return alert($(this).prop('id')); 
     }); 

你可以參考下面的小提琴: http://jsfiddle.net/varun1989/17wkzgqj/2/