我正在使用Jquery进行验证,需要使用自己的标签从每个元素获取$ label。现在alert()给出了med [object object]。对我来说最好的事情就是获得一个警告(),其中所有字段都排成一行,没有填写。而不是每个人的警报()。
这是一个小提琴: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)
}
});
在alert()我希望这样“你需要填写:姓名,电子邮件”
尝试
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)
更新:
是否可以在一个alert()中安排所有$ label而不是每个都有一个alert()?
是
$('input').each(function(){
if ($(this).val() == '') {
$element = $(this)
var $label = $("label[for='"+$element.attr('id')+"']")
alert("You need to fill :" + $label.text())
}
});
试着提醒
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,如果你想获得所选标签的内容,你必须得到它的html alert($label.text())
object
而不是下线:
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()
这不是一个很好的例子,但您可以使用jQuery中的DEMO函数,该函数将在您选择的组件之前找到之前的标签。
$('input').each(function () {
if ($(this).val() == '') {
$element = $(this);
var label = $element.closest("div").find("label").text();
alert(label)
}
});
的jsfiddle:prev
$(document).ready( function() {
$('input').each(function(){
alert($(this).prev("label").html())
});
});
使用JQuery,您可以使用$(input).labels()找到链接到输入的所有标签。
http://jsfiddle.net/gQnaM/