2013-08-22 29 views
9

Tôi đang thực hiện xác thực với Jquery và cần nhận nhãn $ từ mỗi phần tử có nhãn riêng. Bây giờ alert() cho med [đối tượng đối tượng]. Điều tốt nhất cho tôi ở đây là để có được một cảnh báo() với tất cả các lĩnh vực xếp hàng mà không được điền. Và không phải là một cảnh báo() cho mỗi.Nhận nhãn cho trường nhập

Đây là một fiddle: http://jsfiddle.net/s7pYX/

Điều này được thực hiện như thế nào?

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)  

} 

}); 

Trong alert() Tôi hy vọng như thế này "Bạn cần phải điền: Tên, E-mail"

+0

Và những gì bạn đang mong đợi trong cảnh báo? –

+0

Trong cảnh báo() Tôi mong đợi như thế này "Bạn cần điền: Tên, E-mail" – Kim

+0

Cảm ơn! Nhưng có thể sắp xếp tất cả các nhãn $ trong một cảnh báo() và không phải một cảnh báo() mỗi? – Kim

Trả lời

19

Cố gắng để cảnh báo các nội dung của $label, bạn có thể sử dụng .text() cho

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

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

}); 

Demo: Fiddle

cập nhật

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) 

Demo: Fiddle

+0

Cảm ơn, điều đó đã làm được! Nhưng làm cách nào để có thể nhận được tất cả nhãn $ trong một cảnh báo()? – Kim

+0

@Bạn có muốn tất cả các giá trị 'lebal' có giá trị đầu vào trống trong một cảnh báo không? –

+0

@Kim kiểm tra cập nhật –

1

cố gắng cảnh báo

alert($label.text()) 
1

vì bạn đang gửi một object đến chức năng cảnh báo, nếu bạn muốn để có được nội dung của các nhãn lựa chọn, bạn có để có được nó html http://jsfiddle.net/s7pYX/2/

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

$element = $(this) 

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

alert($label)  

} 

}); 
1

Thay vì dòng dưới đây:

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

Sử dụng đoạn mã sau:

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

Bạn đang nhận được chỉ là đối tượng bạn cần phải sử dụng .html() hoặc .text() để nhận được văn bản bên trong thẻ nhãn.

1

Kiểm tra này DEMO

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

     $element = $(this); 

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

     alert(label) 

    } 

}); 
3

Hãy thử

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

$element = $(this) 

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

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

} 

}); 

DEMO

Cập nhật:

là nó có thể để sắp xếp tất cả các nhãn $ trong một cảnh báo() và không phải một cảnh báo() mỗi?

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

Đây không phải là một ví dụ tuyệt vời nhưng bạn có thể sử dụng chức năng prev từ jQuery mà sẽ tìm thấy những nhãn trước đó trước khi thành phần của bạn lựa chọn.

$(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: ")); 
Các vấn đề liên quan