2013-08-22 30 views
9

मैं jquery के साथ एक सत्यापन कर रहा हूं और प्रत्येक तत्व से अपने लेबल के साथ $ लेबल प्राप्त करने की आवश्यकता है। अब चेतावनी() मेड [ऑब्जेक्ट ऑब्जेक्ट] देता है। यहां मेरे लिए सबसे अच्छी बात यह है कि सभी फ़ील्ड के साथ अलर्ट() को भरना है जो भरा नहीं है। और प्रत्येक के लिए एक चेतावनी() नहीं। http://jsfiddle.net/s7pYX/इनपुट फ़ील्ड के लिए लेबल प्राप्त करें

यह कैसे पूरा किया है:

यहाँ एक बेला है?

HTML:

<div> 
<label for="txtName">Name</label> 
<input type="text" id="txtName" class="form-control" name="txtName"> 
</div> 

<div> 
<label for="txtEmail">E-mail</label> 
<input type="text" id="txtEmail" class="form-control" name="txtEmail"> 
</div> 

Jquery:

$('input').each(function(){ 
if ($(this).val() == '') { 

$element = $(this) 

var $label = $("label[for='"+$element.attr('id')+"']") 

alert($label)  

} 

}); 

चेतावनी में() मैं इस तरह की उम्मीद "तुम बाहर भरने की जरूरत है: नाम, ई-मेल"

+0

और क्या आप सूचना में उम्मीद कर रहे हैं? –

+0

अलर्ट में() मुझे उम्मीद है कि "आपको भरना होगा: नाम, ई-मेल" – Kim

+0

धन्यवाद! लेकिन क्या सभी $ लेबल को एक अलर्ट() में व्यवस्थित करना संभव है और प्रत्येक अलर्ट() नहीं? – Kim

उत्तर

19

$label की सामग्री को सचेत करने के लिए प्रयास करें प्राप्त करने के लिए चयनित लेबल की सामग्री प्राप्त करना चाहते हैं, तो आप इस

के लिए .text() उपयोग कर सकते हैं
$('input').each(function(){ 
    var $element = $(this) 

    if ($element.val() == '') { 
     var $label = $("label[for='"+this.id+"']") 
     alert($label.text())  
    } 

}); 

डेमो: Fiddle

अद्यतन

var $labels = $("label[for]"); 
var empties = $('input').filter(function(){ 
    return $.trim($(this).val()) == '' 
}).map(function(){ 
    return $labels.filter('[for="'+this.id+'"]').text() 
}).get().join(', ') 

alert(empties) 

डेमो: Fiddle

+0

धन्यवाद, यह बना दिया! लेकिन एक चेतावनी() में सभी $ लेबल कैसे प्राप्त करना संभव है? – Kim

+0

@ किम आप सभी 'लीबल' मान चाहते हैं जिनके इनपुट मूल्य एक अलर्ट में खाली है? –

+0

@ किम अपडेट की जांच करें –

1

करने की कोशिश चेतावनी

alert($label.text()) 
1

क्योंकि आप चेतावनी समारोह के लिए एक object भेज रहे हैं, तो आप आप इसे एचटीएमएल है http://jsfiddle.net/s7pYX/2/

$('input').each(function(){ 
if ($(this).val() == '') { 

$element = $(this) 

var $label = $("label[for='"+$element.attr('id')+"']").html(); 

alert($label)  

} 

}); 
1
नीचे लाइन के बजाय

:

var $label = $("label[for='"+$element.attr('id')+"']" 

उपयोग निम्न कोड:

var $label = $("label[for='"+$element.attr('id')+"']").text(); 

आप केवल वस्तु आप .html() या .text() लिए उपयोग करने की आवश्यकता हो रही है लेबल टैग के अंदर पाठ प्राप्त करें।

1

चेक इस DEMO

$('input').each(function() { 
    if ($(this).val() == '') { 

     $element = $(this); 

     var label = $element.closest("div").find("label").text(); 

     alert(label) 

    } 

}); 
3

प्रयास करें

$('input').each(function(){ 
if ($(this).val() == '') { 

$element = $(this) 

var $label = $("label[for='"+$element.attr('id')+"']") 

alert("You need to fill :" + $label.text())  

} 

}); 

DEMO

अद्यतन:

यह संभव है सभी $ लेबल को एक अलर्ट() में व्यवस्थित करने के लिए और प्रत्येक अलर्ट() नहीं?

हाँ

var errorString =""; 
var isNeedToFill=false; 
$('input').each(function(){ 
if ($(this).val() == '') { 
isNeedToFill =true; 
$element = $(this) 

var $label = $("label[for='"+$element.attr('id')+"']"); 
    errorString += $label.text()+" "; 
} 
}); 
if(isNeedToFill){ 
alert("You need to fill :" +errorString); 
} 

DEMO

0

यह एक महान उदाहरण नहीं है, लेकिन आप जो आपके चयनित घटक से पहले पिछले लेबल मिलेगा jQuery से prev समारोह इस्तेमाल कर सकते हैं।

$(document).ready(function() { 

    $('input').each(function(){ 
     alert($(this).prev("label").html()) 
    }); 

}); 

JSFiddle: http://jsfiddle.net/gQnaM/

0
var response = ""; 
$('input').each(function(){ 
    if ($(this).val() == '') { 

    response += ", " + $('label[for="' + this.id + '"]').html(); 
    } 
}); 

alert(response.replace(", ", "You need to fill out: ")); 
संबंधित मुद्दे