获取输入字段的标签
我正在使用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)); }); });