获取输入字段的标签

问题描述 投票:11回答:9

我正在使用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()我希望这样“你需要填写:姓名,电子邮件”

jquery label each
9个回答
27
投票

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

$('input').each(function(){
    var $element = $(this)

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

}); 

但是:Kua zxsw指出

更新

Fiddle

但是:Kua zxsw指出


3
投票

尝试

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

更新:

是否可以在一个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())    

 }

 }); 

DEMO


1
投票

试着提醒

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);
 }

1
投票

因为你正在向警报功能发送一个DEMO,如果你想获得所选标签的内容,你必须得到它的html alert($label.text())

object

1
投票

而不是下线:

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(); 获取标签内部文本所需的对象。


1
投票

检查这个.html()

.text()

0
投票

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

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

        $element = $(this);

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

        alert(label)

    }

});

的jsfiddle:prev


0
投票
$(document).ready( function() {

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

});

0
投票

使用JQuery,您可以使用$(input).labels()找到链接到输入的所有标签。

http://jsfiddle.net/gQnaM/
© www.soinside.com 2019 - 2024. All rights reserved.