簡體   English   中英

單擊復選框后,如何知道復選框的狀態

[英]When checkbox is clicked, how to know the state of the checkboxes

編輯:請閱讀文章的結尾部分,我知道告訴未選中部分需要放在代碼塊中,這里的問題是代碼的第一部分沒有注冊“點擊”。 因此,沒有那件事就無能為力。

E2:可能會建議在框上添加onclick,因為框的代碼是用JS生成的,所以我將其添加一次,所有框都將得到函數調用,但這有點丑陋

我有一組復選框,當單擊一個復選框時,我需要返回未選中的值。 HTML:

<div id="myCheckboxList">
<input type="checkbox" name="myList" value="1" checked>1
<input type="checkbox" name="myList" value="2" checked>2
<input type="checkbox" name="myList" value="3" checked>3
</div>

JavaScript的:

$(function(){
  $("input[name=myList]").on("click",function(){
    console.log("triggered");
    //code here to find which ones are unchecked

  });
});

我也嘗試將其添加到代碼中

$boxes = $('input[name=myList]:not(:checked)');
$boxes.each(function(){
    // Do stuff with for each unchecked box
});

不幸的是,“觸發”沒有將輸出發送到控制台,所以不確定為什么會這樣,以及當選中復選框時我將如何發生事件

最簡單的方法是:

let v = $(this).attr('value');
if(v === 1){ // box 1 selected

將此添加到您的'click'處理程序中應該可以。

嘗試這樣:

 $(function(){ $("input[name=myList]").on("click",function(){ var uncheck=[]; //console.log("triggered"); //code here to find which ones are unchecked $boxes = $("input[name=myList]:not(:checked)"); $boxes.each(function(){ // Do stuff with for each unchecked box uncheck.push($(this).attr('value')) console.log(uncheck); }); }); }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <div id="myCheckboxList"> <input type="checkbox" name="myList" value="1" checked>1 <input type="checkbox" name="myList" value="2" checked>2 <input type="checkbox" name="myList" value="3" checked>3 </div> 

您需要在click事件中添加每個腳本。

 $(function(){ $("input[name=myList]").on("click",function(){ $("input[name=myList]:not(:checked)").each(function() { console.log($(this).val()); }); }); }); 
 <div id="myCheckboxList"> <input type="checkbox" name="myList" value="1" checked>1 <input type="checkbox" name="myList" value="2" checked>2 <input type="checkbox" name="myList" value="3" checked>3 </div> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 

我將您的代碼直接復制到了一個小提琴,並且工作正常。 您可能會缺少jQuery庫?

編輯:

可以肯定的是,我更新了代碼片段以生成輸入,並且仍然可以正常工作。

 $(function() { var html = '<input type="checkbox" name="myList" value="1" checked>1' +'<input type="checkbox" name="myList" value="2" checked>2' +'<input type="checkbox" name="myList" value="3" checked>3'; $("#myCheckboxList").html(html); $("input[name=myList]").on("click", function() { console.log("triggered"); //code here to find which ones are unchecked $boxes = $('input[name=myList]:not(:checked)'); $boxes.each(function() { console.log($(this).val()); }); }); }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div id="myCheckboxList"> </div> 

另一種解決方案是在html中添加“ onclick”方法。 每當選中復選框時,它將調用javascript函數。 該功能可以包含復選框的任何邏輯。

<input type="checkbox" name="myList" value="1" checked onclick="checkboxChangeEvent();">1

然后,您可以實現javascript函數,以返回未選中框的列表或按名稱查找輸入框,並像前面的答案一樣返回警報。

function checkboxChangeEvent(){
    $boxes = $('input[name=myList]:not(:checked)');
    $boxes.each(function() {
      alert($(this).val());
    });
}

暫無
暫無

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

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