Kiểm tra nếu một hộp kiểm tra được kiểm tra bằng jQuery


588

Nếu hộp kiểm được chọn, thì tôi chỉ cần lấy giá trị là 1; mặt khác, tôi cần lấy nó là 0. Làm cách nào để sử dụng jQuery?

$("#ans").val() sẽ luôn cho tôi một quyền trong trường hợp này:

<input type="checkbox" id="ans" value="1" />

2
.val () là để lấy thuộc tính value, không phải trạng thái kiểm tra. Thuộc tính value có thể là bất cứ thứ gì, nó không cần phải là boolean.
Pablo Pazos

nếu bạn vẫn ở đây, bạn có thể muốn cập nhật câu trả lời được chấp nhận cho phần mềm hiện đại ... rất nhiều người vẫn thấy câu hỏi này
xaxxon

Câu trả lời:


1008

Sử dụng .is(':checked')để xác định xem nó có được kiểm tra hay không và sau đó đặt giá trị của bạn cho phù hợp.

Thêm thông tin ở đây.


1
Ngoài ra, khi bạn thực hiện $ ("# id"). Là ("đã kiểm tra") trong mệnh đề if, bạn sẽ nhận được đúng hoặc sai, không bật / tắt, bằng cách trả lại và bạn có thể gửi nó tới tập lệnh phụ trợ của mình và làm bất cứ điều gì bạn muốn.
Zanoldor

1
Có lẽ điều này không quan trọng hiện nay: ReSharper (tôi đoán) đưa ra cảnh báo " Lớp giả 'đã kiểm tra' không tương thích với Internet Explorer 8.0 ".
Uwe Keim

211
$("#ans").attr('checked') 

sẽ cho bạn biết nếu nó được kiểm tra. Bạn cũng có thể sử dụng tham số thứ hai đúng / sai để kiểm tra / bỏ chọn hộp kiểm.

$("#ans").attr('checked', true);

Mỗi bình luận, sử dụng propthay vì attrkhi có sẵn. Ví dụ:

$("#ans").prop('checked')

90

Chỉ dùng $(selector).is(':checked')

Nó trả về một giá trị boolean.


56
// use ternary operators
$("#ans").is(':checked') ? 1 : 0;

@Loic để đặt giá trị của mình bằng cú pháp tạm thời ngắn gọn, ví dụ :: a = được kiểm tra? 1: 0

21

Câu trả lời của Stefan Brinkmann là tuyệt vời, nhưng không đầy đủ cho người mới bắt đầu (bỏ qua bài tập biến). Chỉ cần làm rõ:

// this structure is called a ternary operator
var cbAns = ( $("#ans").is(':checked') ) ? 1 : 0;

Nó hoạt động như thế này:

 var myVar = ( if test goes here ) ? 'ans if yes' : 'ans if no' ;

Thí dụ:

var myMath = ( 1 > 2 ) ? 'yes' : 'no' ;
alert( myMath );

Cảnh báo 'không'

Nếu điều này hữu ích, vui lòng nêu lên câu trả lời của Stefan Brinkmann.



15

Tôi đã tìm thấy vấn đề tương tự trước đây, hy vọng giải pháp này có thể giúp bạn. đầu tiên, thêm một thuộc tính tùy chỉnh vào hộp kiểm của bạn:

<input type="checkbox" id="ans" value="1" data-unchecked="0" />

viết một phần mở rộng jQuery để nhận giá trị:

$.fn.realVal = function(){
    var $obj = $(this);
    var val = $obj.val();
    var type = $obj.attr('type');
    if (type && type==='checkbox') {
        var un_val = $obj.attr('data-unchecked');
        if (typeof un_val==='undefined') un_val = '';
        return $obj.prop('checked') ? val : un_val;
    } else {
        return val;
    }
};

sử dụng mã để nhận giá trị hộp kiểm:

$('#ans').realVal();

bạn có thể kiểm tra ở đây


10
... bởi vì jQuery được gọi là thư viện "việc viết nhiều hơn làm ít hơn"
myshadowself

câu chuyện dài mà bạn đã đi xa JQUERY muốn nhà phát triển viết ít hơn và làm nhiều hơn. vấn đề đơn giản xứng đáng là giải pháp đơn giản
ShapCyber

vâng, đồng ý, viết ít, làm nhiều. bạn viết tiện ích mở rộng một lần và trong thời gian còn lại, bạn chỉ gọi API $ (someradio) .realVal (), bạn không cần phải viết tiện ích mở rộng nhiều lần.
alphakevin

Bạn thậm chí không cần phải viết phần mở rộng một lần, đừng bao giờ 'nhiều lần'! Oo
Coz

8
$('input:checkbox:checked').val();        // get the value from a checked checkbox

7
<input type="checkbox" id="ans" value="1" />

Jquery: var test= $("#ans").is(':checked') và nó trả về đúng hay sai.

Trong chức năng của bạn:

$test =($request->get ( 'test' )== "true")? '1' : '0';


4

Sử dụng:

$("#ans option:selected").val()

Nếu nó không được chọn, thì phần đầu tiên sẽ không trả về bất cứ thứ gì, phải không?
xaxxon

@Senthil, OP không yêu cầu lấy giá trị của hộp kiểm đã chọn, thay vào return 1đó nếu nó được chọn
Om Shankar

4
function chkb(bool){
if(bool)
return 1;
return 0;
}

var statusNum=chkb($("#ans").is(':checked'));

statusNum sẽ bằng 1 nếu hộp kiểm được chọn và 0 nếu không.

EDIT: Bạn cũng có thể thêm DOM vào chức năng.

function chkb(el){
if(el.is(':checked'))
return 1;
return 0;
}

var statusNum=chkb($("#ans"));

4

Gần đây tôi đã gặp một trường hợp mà tôi cần kiểm tra giá trị của hộp kiểm khi người dùng nhấp vào nút. Cách thích hợp duy nhất để làm như vậy là sử dụng prop()thuộc tính.

var ansValue = $("#ans").prop('checked') ? $("#ans").val() : 0;

Điều này làm việc trong trường hợp của tôi có lẽ ai đó sẽ cần nó.

Khi tôi đã thử .attr(':checked')nó trả về checkednhưng tôi muốn giá trị boolean và .val()giá trị trả về của thuộc tính value.


4

Có một số tùy chọn có như ....

 1. $("#ans").is(':checked') 
 2. $("#ans:checked")
 3. $('input:checkbox:checked'); 

Nếu tất cả các tùy chọn này trở về đúng thì bạn có thể đặt giá trị theo cách phù hợp.


Cái đầu tiên phải là (': đã kiểm tra'), không hoạt động khác.
Arie Livshin

2

Thử cái này

$('input:checkbox:checked').click(function(){
    var val=(this).val(); // it will get value from checked checkbox;
})

Ở đây cờ là đúng nếu được chọn nếu không sai

var flag=$('#ans').attr('checked');

Một lần nữa điều này sẽ làm cho cheked

$('#ans').attr('checked',true);


0

Bạn có thể nhận giá trị (đúng / sai) bằng hai phương thức này

$("input[type='checkbox']").prop("checked");
$("input[type='checkbox']").is(":checked");

0

Đầu tiên kiểm tra giá trị được kiểm tra

$("#ans").find("checkbox").each(function(){
    if ($(this).prop('checked')==true){ 
    var id = $(this).val()
    }
});

Khác đặt giá trị 0


0

Nếu bạn muốn giá trị nguyên của kiểm tra hay không, hãy thử:

$("#ans:checked").length

0

Bạn có thể thực hiện nó, theo cách này:

$('input[id=ans]').is(':checked');     
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.