获取输入字段的标签

我正在使用Jquery进行validation,需要使用自己的标签从每个元素获取$ label。 现在alert()给出了med [object object]。 对我来说最好的事情就是获得一个警告(),其中所有字段都排成一行,没有填写。 而不是每个人的警报()。

这是一个小提琴: http : //jsfiddle.net/s7pYX/

这是如何完成的?

HTML:

jQuery的:

  $('input').each(function(){ if ($(this).val() == '') { $element = $(this) var $label = $("label[for='"+$element.attr('id')+"']") alert($label) } }); 

在alert()我希望这样“你需要填写:姓名,电子邮件”

尝试提醒$label的内容,你可以使用.text()

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

演示: 小提琴

更新

 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) 

演示: 小提琴

尝试

 $('input').each(function(){ if ($(this).val() == '') { $element = $(this) var $label = $("label[for='"+$element.attr('id')+"']") alert("You need to fill :" + $label.text()) } }); 

DEMO

更新:

是否可以在一个alert()中安排所有$ label而不是每个都有一个alert()?

 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

试着提醒

 alert($label.text()) 

因为你正在向警报function发送一个object ,如果你想得到所选标签的内容,你必须得到它的HTML http://jsfiddle.net/s7pYX/2/

  $('input').each(function(){ if ($(this).val() == '') { $element = $(this) var $label = $("label[for='"+$element.attr('id')+"']").html(); alert($label) } }); 

而不是下线:

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

使用以下代码:

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

您只获得了使用.html().text()获取标签内部文本所需的对象。

检查这个演示

 $('input').each(function () { if ($(this).val() == '') { $element = $(this); var label = $element.closest("div").find("label").text(); alert(label) } }); 

这不是一个很好的例子,但您可以使用jQuery中的prev函数,它将在您选择的组件之前找到之前的标签。

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

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

  var response = ""; $('input').each(function(){ if ($(this).val() == '') { response += ", " + $('label[for="' + this.id + '"]').html(); } }); alert(response.replace(", ", "You need to fill out: ")); 
 $('input').each( function() { var $labels = $(this).labels(); $labels.each(function(index, element){ alert($(element)); }); });