jQuery: Kiểm tra nếu hộp kiểm KHÔNG được chọn


110

Tôi đang gặp khó khăn khi tìm ra điều này. Tôi có hai hộp kiểm (trong tương lai sẽ có thêm):

  • checkSurfaceEnvironment-1
  • checkSurfaceEnvironment-2

Về cơ bản, tôi muốn viết một câu lệnh if và kiểm tra xem một trong số chúng được chọn và một câu lệnh khác KHÔNG được chọn. Cách dễ nhất để thực hiện những điều sau là gì:

if ( $("#checkSurfaceEnvironment-1").attr('checked', true) &&
     $("#checkSurfaceEnvironment-2").is('**(NOT??)** :checked') ) {
        // do something
}

3
Sử dụng ||not &&để kiểm tra nếu một trong hai được kiểm tra. &&kiểm tra nếu cả hai được kiểm tra.
j08691

Câu trả lời:


213

Một cách đáng tin cậy mà tôi sử dụng là:

if($("#checkSurfaceEnvironment-1").prop('checked') == true){
    //do something
}

Nếu bạn muốn lặp lại các phần tử đã kiểm tra, hãy sử dụng phần tử mẹ

$("#parentId").find("checkbox").each(function(){
    if ($(this).prop('checked')==true){ 
        //do something
    }
});

Thêm thông tin:

Điều này hoạt động tốt bởi vì tất cả các hộp kiểm đã được kiểm tra một thuộc tính lưu trữ trạng thái thực tế của hộp kiểm. Nếu bạn muốn, bạn có thể kiểm tra trang và cố gắng kiểm tra và bỏ chọn một hộp kiểm, và bạn sẽ thấy thuộc tính "đã kiểm tra" (nếu có) sẽ vẫn như cũ. Thuộc tính này chỉ đại diện cho trạng thái ban đầu của hộp kiểm chứ không phải trạng thái hiện tại . Trạng thái hiện tại được lưu trữ trong thuộc tính đã kiểm tra của phần tử dom cho hộp kiểm đó.

Xem Thuộc tính và Thuộc tính trong HTML


2
Umm ... điều này sẽ chỉ cần đặtchecked = true
Naftali aka Neal

@Pablo - Kiểm tra câu trả lời của tôi bên dưới, tôi cũng là một lựa chọn đáng tin cậy / apt.
Aneesh Vijendran 30/10/13

@PabloMescher Này, bạn có thể giúp tôi được không? Tôi thực sự muốn xác định (các) hộp kiểm nào được / được chọn trong số nhiều hộp kiểm? Và, bật / tắt hộp văn bản bên cạnh nó. Bất kỳ trợ giúp sẽ được đánh giá cao.
1lastBr3ath

@ 1lastBr3ath chắc chắn, nếu bạn đang sử dụng jQuery, bạn chỉ cần tìm một bộ chọn cho hộp văn bản liên quan đến hộp kiểm và sử dụng ví dụ thứ hai của tôi. Nó sẽ trông giống như if ($ (this) .prop ('đã kiểm tra')) {$ (this) .find ("<textboxSelector>") .attr ("bị vô hiệu hóa", true); }
Pablo Mescher

1
@Stophface trong trường hợp này thuộc tính này sẽ luôn là một boolean vì nó là một thuộc tính được tính toán chứ không phải là một chuỗi, vì vậy bạn có thể sử dụng ==. Đó là khôn ngoan để luôn luôn sử dụng === dù vì đây không phải là luôn luôn như vậy
Pablo Mescher

77
if (!$("#checkSurfaceEnvironment-1").is(":checked")) {
    // do something if the checkbox is NOT checked
}

31

Bạn cũng có thể sử dụng .not()phương thức jQuery hoặc :not()bộ chọn:

if ($('#checkSurfaceEnvironment').not(':checked').length) {
    // do stuff for not selected
}

Ví dụ về JSFiddle


Ghi chú bổ sung

Từ tài liệu API jQuery cho :not() bộ chọn :

Các .not () phương pháp sẽ kết thúc cung cấp cho bạn với các lựa chọn có thể đọc được nhiều hơn đẩy selectors phức tạp hoặc biến thành một : không () chọn lọc. Trong hầu hết các trường hợp, nó là một lựa chọn tốt hơn.


1
! $ ("# checkSurfaceEnosystem"). is (": check") trả về một boolean. Nó là đúng nếu hộp kiểm không được chọn. $ ('# checkSurfaceEnosystem'). not (': check') trả về một mảng các phần tử DOM. Kiểm tra điều này với 'if' trả về 'true' ngay cả khi không có kết quả phù hợp với bộ chọn và mảng trống. Cách duy nhất câu trả lời của bạn có thể đúng là nếu bạn thử nghiệm i $ ( '# checkSurfaceEnvironment') không ( ': kiểm tra') chiều dài, mà sẽ trở về 0 hoặc 1...
Thibault Witzig

22

Một cách thay thế:

Đây là một ví dụ làm việc và đây là mã, bạn cũng nên sử dụng prop.

$('input[type="checkbox"]').mouseenter(function() { 
    if ($(this).is(':checked')) {
        //$(this).prop('checked',false);
        alert("is checked");
    } else {
         //$(this).prop('checked',true);
        alert("not checked");
    }
});​

Tôi đã nhận xét về cách chuyển đổi thuộc tính đã kiểm tra.


9
if ( $("#checkSurfaceEnvironment-1").is(":checked") && $("#checkSurfaceEnvironment-2").not(":checked") )

6

Tôi đang tìm kiếm một triển khai trực tiếp hơn như avijendr đã đề xuất.

Tôi gặp một chút rắc rối với cú pháp của anh ấy / cô ấy, nhưng tôi đã làm được điều này:

if ($('.user-forms input[id*="chkPrint"]:not(:checked)').length > 0)

Trong trường hợp của tôi, tôi có một bảng với một lớp user-formsvà tôi đang kiểm tra xem có bất kỳ hộp kiểm nào có chuỗi checkPrinttrong chúng idđã được bỏ chọn hay không.


5

Tôi nghĩ cách dễ nhất (với jQuery) để kiểm tra xem hộp kiểm được chọn hay KHÔNG là:

nếu 'được kiểm tra':

if ($(this).is(':checked')) {
// I'm checked let's do something
}

nếu KHÔNG được 'kiểm tra':

if (!$(this).is(':checked')) {
// I'm NOT checked let's do something
}

4

Đây tôi có một đoạn mã cho câu hỏi này.

$(function(){
   $("#buttoncheck").click(function(){
        if($('[type="checkbox"]').is(":checked")){
            $('.checkboxStatus').html("Congratulations! "+$('[type="checkbox"]:checked').length+" checkbox checked");
        }else{
            $('.checkboxStatus').html("Sorry! Checkbox is not checked");
         }
         return false;
   })
    
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form>
  <p>
    <label>
      <input type="checkbox" name="CheckboxGroup1" value="checkbox" id="CheckboxGroup1_0">
      Checkbox</label>
    <br>
    <label>
      <input type="checkbox" name="CheckboxGroup1_" value="checkbox" id="CheckboxGroup1_1">
      Checkbox</label>
    <br>
  </p>
  <p>
    <input type="reset" value="Reset">
    <input type="submit" id="buttoncheck" value="Check">
  </p>
  <p class="checkboxStatus"></p>
</form>


3

Để làm điều đó với những .attr()gì bạn có, để xem nó có được kiểm tra hay không .attr("checked", "checked"), và nếu không thì nó sẽ.attr("checked") == undefined


1

Trả về true nếu tất cả checbox được chọn trong một div

function all_checked (id_div){
 all_checked = true;

 $(id_div+' input[type="checkbox"]').each(function() { 
    all_checked = all_checked && $('this').prop('checked');
 }

 return all_checked;
}

1

Điều kiện đơn giản và dễ kiểm tra hoặc không kiểm tra

<input type="checkbox" id="ev-click" name="" value="" >

<script>
    $( "#ev-click" ).click(function() {
        if(this.checked){
            alert('checked');
        }
        if(!this.checked){
            alert('Unchecked');
        }
    });
</script>

1

thử cái này

if ($("#checkSurfaceEnvironment-1:checked").length>0) {
    //your code in case of NOT checked
}

Trong Mã trên, chọn phần tử theo Id (#checkSurfaceEnvironment-1)sau đó lọc ra trạng thái đã kiểm tra của nó bằng (:checked)bộ lọc.

Nó sẽ trả về mảng đối tượng phần tử đã kiểm tra. Nếu có bất kỳ đối tượng nào tồn tại trong mảng thì điều kiện if sẽ được thỏa mãn.


Mặc dù câu trả lời của bạn có thể hữu ích, nhưng ít nhất bạn nên giải thích tại sao. Vì hiện tại, câu trả lời của bạn đã được chuyển vào hàng đợi kiểm duyệt Bài đăng Chất lượng thấp (đó là nơi tôi đang xem nó). Tôi khuyên bạn nên chỉnh sửa câu trả lời của mình để thêm giải thích.
Chris Spittles

1

Có hai cách bạn có thể kiểm tra tình trạng.

if ($("#checkSurfaceEnvironment-1").is(":checked")) {
    // Put your code here if checkbox is checked
}

HOẶC bạn cũng có thể sử dụng cái này

if($("#checkSurfaceEnvironment-1").prop('checked') == true){
    // Put your code here if checkbox is checked
}

Tôi hy vọng điều này hữu ích cho bạn.


1

Đây là cách đơn giản nhất được đưa ra

 <script type="text/javascript">

        $(document).ready(function () {
            $("#chk_selall").change("click", function () {

                if (this.checked)
                {
                    //do something
                }
                if (!this.checked)
                {
                    //do something

                }

            });

        });

    </script>

0

Tôi đã sử dụng cái này và làm việc cho tôi!

$("checkbox selector").click(function() {
    if($(this).prop('checked')==true){
       do what you need!
    }
});

0

Tôi biết điều này đã được trả lời, nhưng đây vẫn là một cách tốt để làm điều đó:

if ($("#checkbox").is(":checked")==false) {
    //Do stuff here like: $(".span").html("<span>Lorem</span>");
}

0
if($("#checkbox1").prop('checked') == false){
    alert('checkbox is not checked');
    //do something
}
else
{ 
    alert('checkbox is checked');
}

4
Mặc dù điều này có thể trả lời câu hỏi của các tác giả, nhưng nó thiếu một số từ giải thích và / hoặc liên kết đến tài liệu. Các đoạn mã thô không hữu ích lắm nếu không có một số cụm từ xung quanh chúng. Bạn cũng có thể thấy cách viết một câu trả lời hay rất hữu ích. Hãy chỉnh sửa câu trả lời của bạn - Từ xét
Nick

-4
$("#chkFruits_0,#chkFruits_1,#chkFruits_2,#chkFruits_3,#chkFruits_4").change(function () {
        var item = $("#chkFruits_0,#chkFruits_1,#chkFruits_2,#chkFruits_3,#chkFruits_4");
    if (item.is(":checked")==true) {
        //execute your code here
    }

    else if (item.is(":not(:checked)"))
    {
        //execute your code here
    }

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