我需要使用複選框,但沒有提交按鈕 - 它需要對用戶已經在頁面上的效果,包含複選框的頁面。如何檢測選中哪個複選框?
本質上,我有~10個複選框元素。用戶選擇其中的一定數量,然後單擊一個按鈕元素。當他們點擊該元素時,我需要檢測哪些複選框已被檢查。用最短的代碼做這件事最好的辦法是什麼?
我需要使用複選框,但沒有提交按鈕 - 它需要對用戶已經在頁面上的效果,包含複選框的頁面。如何檢測選中哪個複選框?
本質上,我有~10個複選框元素。用戶選擇其中的一定數量,然後單擊一個按鈕元素。當他們點擊該元素時,我需要檢測哪些複選框已被檢查。用最短的代碼做這件事最好的辦法是什麼?
有你所有的複選框共享同一個類。
var allChecked = $(".checkBoxClass:checked");
這將返回類別checkBoxClass
中已選中複選框的列表。現在你可以迭代每個元素並對它們進行操作。
for(var i=0; i<allChecked.length; i++) {
console.log("Checkbox " + $(allChecked[i]).val().toString() + " is checked");
}
jQuery是敬業的。這很棒。出於某種原因,我一直很擔心這一點。 – Aerovistae
這是行不通的。類名和檢查的屬性之間有一個空格 – Abhilash
@abhilash - Typo。固定。 – Aesthete
嘗試:
<input type="checkbox" id="1" value="one"/>
<input type="checkbox" id="2" value="two"/>
<input type="checkbox" id="3" value="three"/>
<input type="button" onclick="validate()" value="Check"/>
<script type="text/javascript">
function validate(){
var chkArr = document.querySelectorAll('input[type="checkbox"]');
var notChecked='';
for(var i=0;i<chkArr.length;i++){
if(!chkArr[i].checked)
notChecked += chkArr[i].value
}
if(notChecked.length)
alert(notChecked);
}
</script>
任何這些應該工作:
$('input:checked');
$('input:checkbox:checked');
$('input:checkbox').filter(':checked');
你使用jquery或其他JS LIB?或者你需要在計劃的JavaScript代碼中完成?在jQuery中:'$('selectorx:checked')'是最短的一個 – sakhunzai
Esthete明白了!我不在乎,也可能是。無論速度如何,通常都是jQuery。 – Aerovistae
這個問題被標記爲'jquery'。 – Aesthete