我有HTML格式的複選框「刪除」數組和一個複選框「togglechbx」切換所有複選框檢查/取消選中。因此,當沒有選中delete []時,必須禁用「delete-selected-btn」,並且必須自動取消選中「togglechbx」複選框。javascript toggle all並禁用按鈕同時
下面的javascript是訣竅,但我已經從不同的計算器例子中結合了它。這就是爲什麼它看起來如此醜陋和混亂。你們能否看看,如果有辦法讓它變得更短,更清潔?先謝謝你。
<form id="show-images">
<input id="togglechbx" type="checkbox" onClick="toggle(this);" />
<input type="checkbox" class="delete-img" name="delete[]" value="1"/>
<input type="checkbox" class="delete-img" name="delete[]" value="2"/>
<input type="checkbox" class="delete-img" name="delete[]" value="3"/>
<button id="delete-selected-btn" type="submit" disabled="disabled">Delete selected</button></form>
<script>
$('.delete-img').change(function(){
var arrlenght = $("#show-images input:checkbox:checked").length;
if (arrlenght > 0){
if (arrlenght == 1 && document.getElementById("togglechbx").checked) {
$("#togglechbx").prop("checked", false);
$('#delete-selected-btn').attr("disabled", "disabled");
return false;
}
// any one from delete is checked
$('#delete-selected-btn').removeAttr("disabled");
}else{
// none is checked
$('#delete-selected-btn').attr("disabled", "disabled");
}});
function toggle(source) {
checkboxes = document.getElementsByName('delete[]');
for(var i=0, n=checkboxes.length; i<n; i++) {
checkboxes[i].checked = source.checked;
if ($("#show-images input:checkbox:checked").length > 0){
$('#delete-selected-btn').removeAttr("disabled");
}else{
// none is checked
$('#delete-selected-btn').attr("disabled", "disabled");
}
}
}
</script>
這就是我夢想的。非常感謝你 – Shirker
當然,主複選框必須在你的腳本中完全像這裏一樣,而不是像我所做的那樣。 – Shirker