簡體   English   中英

如何選中/取消選中鍵盤上的復選框

[英]how to check/uncheck a checkbox on keyup

我一直在嘗試制作一個腳本,當我按下'c'鍵時,該腳本可以檢查和取消選中復選框,但是它不起作用。

$(document).keyup(function(e){
  if(e.which == 67){
    if($('#main').css('opacity') == 0) {
    if ($('#cHideChat').attr('checked')) {
    $('#cHideChat').prop('checked', false);
    }
    else {
    $('#cHideChat').prop('checked', true);
      }
    }
  }
});

你可以這樣

 $(document).on('keyup', function(e) { var checkBox = $('#cHideChat') if ($('#main').css('opacity') == 0) { if (e.which == 67) checkBox.prop("checked", !checkBox.prop("checked")); } }); 
 #main { opacity: 0; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <input type="checkbox" name="" id="cHideChat"> <div id="main"></div> 

您需要像這樣檢查prop

$(document).keyup(function(e){
  if(e.which == 67){
    if($('#main').css('opacity') == 0) {
    if ($('#cHideChat').prop('checked')) {  // check for prop, not attr
    $('#cHideChat').prop('checked', false);
    }
    else {
    $('#cHideChat').prop('checked', true);
      }
    }
  }
});

我認為這個問題與jQuery無關。 盡管Nenad和Sandeep提供了更好的方法來實現您想要的功能,但是jQuery代碼應該運行良好。 但是我看到另外兩個問題:

首先,鍵代碼67對應於較高的“ C”,因此您的代碼不響應較低的“ c”按下。 較低的'c'的鍵代碼為99。第二,沒有“選中”屬性。 這是一個屬性,您應該通過.prop("checked")而不是.attr("checked") 后者返回undefined ,它對應於false並且永遠不會滿足您的條件。 因此,只需按照Nenad Vracar的建議編輯您的代碼,但請確保像這樣檢查關鍵代碼99:

if (e.which == 67 || e.which == 99) {
    checkBox.prop("checked", !checkBox.prop("checked"));
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM