2012-06-07 19 views
21

Tôi muốn nhận được hộp kiểm có giá trị specfic và làm cho nó kiểm tra ..Nhận hộp với giá trị cụ thể

tôi làm như thế này

$(":checkbox").filter({"value":5}).attr("checked","true");​ 

và đây là html

​<input type="checkbox" name="priv"​​​​​​​​​​​​​​​​​​​​​​​​​​​​​ value="1"​​​​​​​​​​​​​​​​​/> 
<input type="checkbox" name="priv" value="2"/> 
<input type="checkbox" name="priv" value="3"/> 
<input type="checkbox" name="priv" value="4"/> 
<input type="checkbox" name="priv" value="5"/> 
<input type="checkbox" name="priv" value="6"/> 
<input type="checkbox" name="priv" value="7"/> 
<input type="checkbox" name="priv" value="8"/>​ 

đây a demo của sự cố

Trả lời

67

Bạn có thể sử dụng Attribute Equals Selector [name="value"] để nhận các hộp kiểm giá trị cụ thể thứ. Cũng sử dụng prop() thay vì attr() vì cách này được đề xuất bởi jQuery doc.

Live Demo

$(":checkbox[value=4]").prop("checked","true"); 

hoặc

$("input[type=checkbox][value=5]").prop("checked",true); 

Mô tả: Chọn yếu tố mà có thuộc tính chỉ định với một giá trị chính xác bằng một giá trị nhất định, jQuery doc.

Bạn cũng có thể làm điều đó Sử dụng attr() nhưng lệnh prop thích hợp hơn cho các thuộc tính boolean.

$(":checkbox[value=4]").attr("checked","true"); 

Tính đến jQuery 1.6, phương pháp .attr() trả về undefined cho các thuộc tính chưa được thiết lập. Để lấy và thay đổi thuộc tính DOM như các kiểm tra, lựa chọn, hay vô hiệu hóa trạng thái của các yếu tố hình thức, sử dụng phương pháp .prop(), jQuery doc

Sửa, hỏi ý kiến, "Làm thế nào sẽ trông như câu trả lời/tìm thể hiện với giá trị phức tạp, giống như value = "Smith, David"

Bạn có thể gửi kèm theo đó loại giá trị như Smith, David vào dấu nháy đơn. Bạn thậm chí có thể sử dụng nhân vật được sử dụng bởi jQuery như #,., $ etc, xem cập nhật fiddle here.

$("input[type=checkbox][value='#Smith, David$']").attr("checked","true"); 
+0

Nó hoạt động, cảm ơn bạn – palAlaa

+1

Bạn được chào đón – Adil

+0

Đánh cắp tôi nửa giờ: Dấu chấm phẩy trong ví dụ mã thứ hai của bạn là loại tà ác. Khi bạn sao chép toàn bộ dòng ('$ (" input [type = checkbox] [value = 5] "). Prop (" checked ", true);') và dán nó vào tập lệnh của bạn, SublimeText + JSHint (trong trường hợp của tôi) sẽ ném lỗi 'Bất ngờ'. Trình duyệt ** ngừng thực thi ** mã của bạn với lỗi 'Mã thông báo không mong muốn ILLEGAL'. Xóa dấu chấm phẩy và thay thế bằng dấu chấm phẩy đã giúp tôi (hãy tưởng tượng sự tuyệt vọng của tôi ...) Tôi đoán có một ascii-char ẩn hoặc sth –

0
$(":checkbox[value=5]").attr("checked",true);​​​ 
3
$("input:checkbox[value='5']").attr("checked","true") 
7
$(":checkbox").filter(function() { 
    return this.value == '5'; 
}).prop("checked","true");​ 

DEMO

Nếu bạn muốn sử dụng nó cho các giá trị khác nhau sau đó làm cho nó chung chung như sau:

function checkWithValue(val) { 
    $(":checkbox").filter(function() { 
     return this.value == val; 
    }).prop("checked", "true"); 
} 


checkWithValue(5);​ 

DEMO

1

Nó cũng làm việc với thông lệ vuông

$(":checkbox").filter(["value":5]).prop("checked","true"); 
0
$("#catalogTBL").find("input[type=checkbox][value='snet']").prop("checked", true); 

Đây là cách duy nhất tôi có thể có được điều này để làm việc. Tìm kiếm một hộp kiểm trong một bảng.

2

Tôi có giá trị động cần được lặp lại. Đây là những gì đã hiệu quả đối với tôi:

for (var i = 0, len = value.length; i < len; i++) { 
    $("#form-name").find("input[type=checkbox][name='fName']").filter(function() { 
    return this.value == values[i]; 
    }).prop("checked", true); 
} 

Mong rằng sẽ giúp ai đó ra ngoài.