2017-03-03 53 views
1

我不確定是否正確制定了標題,但邏輯是這樣的。

我有4個複選框,3是1沒有。選擇3 將取消選中並選擇將取消選中

我的jQuery按如下:

即使在添加attr(「checked」,false)後也允許檢查複選框

var yes = $("input[type=checkbox].yes"); 

if (yes.length == yes.filter(":checked").length) { 
    $("#no").attr("checked", false); 
} else if($("#no").is(":checked")) { 
    yes.attr("checked", false); 
} else { 
    // do nothing 
} 



它的工作原理。但是,如果我檢查全部是的,我將無法選擇。相反,我需要取消選中1 選擇沒有。如果我檢查,全部是的將被取消選中。不過,我需要取消選中能夠再次選擇

請問有沒有辦法我仍然可以選擇全部是是否被選中?

謝謝!

UPDATE
包括HTML現在

<form id="checkbox-testing" > 
<div class="checkform"> 
    <label>       
     <input class="yes" type="checkbox" value="Yes, 1" id="yes1"><span>&nbsp;Yes, 1</span> 
    </label> 
    <label>       
     <input class="yes" type="checkbox" value="Yes, 2" id="yes2"><span>&nbsp;Yes, 2</span> 
    </label> 
    <label>       
     <input class="yes" type="checkbox" value="Yes, 3" id="yes3"><span>&nbsp;Yes, 3</span> 
    </label> 
    <label>       
     <input type="checkbox" value="No" id="no"><span>&nbsp;No</span> 
    </label> 
</div> 
<input type="submit" value="Test" /> 
</form> 
+0

添加HTML標記 – guradio

+0

@guradio。你能詳細說明嗎?謝謝! – thebeast22

+0

如果這是一個二進制狀態,可以將你的html和js – guradio

回答

0
使用

.prop()來測試所檢查PROPERT代替.attr() - 下面的代碼片斷使用.prop然後用.change ()事件 - 在這種情況下,我只是conseol.logging輸出,但你可以改變另一個複選框的屬性。

編輯 - 我剛剛更新了我的答案,給一個收音機按鈕選擇或其他選項和一個按鈕來清除點擊選中的屬性。

$(document).ready(function(){ 
 
    $("input[type=radio]").change(function(){; 
 
    console.log("yes: " + $(".yes").prop("checked")); 
 
    console.log(" no: " + $(".no").prop("checked")); 
 
    }) 
 
    
 
    $('#clear').click(function(){ 
 
    $("input[type=radio]").prop('checked',false) 
 
    }) 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<label for ="yes">Yes 
 
    <input type ="radio" name ="test" id="yes" class="yes" checked value"yes"/></label> 
 
<label for ="no">No 
 
    <input type ="radio" name ="test" id="no" class="no" value = "no"/> 
 
    <hr/> 
 
    
 
    
 
    <button type ="button" name ="test" id="clear" >Clear Value</button>

var yes = $("input[type=checkbox].yes"); 

if (yes.length == yes.filter(":checked").length) { 
    $("#no").prop("checked", false); 
} else if($("#no").is(":checked")) { 
    yes.prop("checked", false); 
} else { 
    // do nothing 
} 
+0

hi @ gavgrif。謝謝,但輸出仍然是一樣的。我仍然需要取消選擇1是/否選擇其他。 – thebeast22

+0

@ thebeast22,如果你用'HTML'更新你的問題會更好。 – Ionut

相關問題