[英]Checkbox Enable/Disable with jQuery
我希望有一個jquery函數,當單擊任何復選框時將激活該函數,並且根據單擊的復選框的值字段,它將禁用或啟用其他復選框。
到目前為止,我有:
$(function () {
$('input [type="checkbox"]').click(function () {
});
});
好的,所以我取得了一些進展......但它仍然無法正常工作。
<script type="text/javascript">
$(function () {
$(':checkbox').click(function () {
$value = $(this).attr('value');
if ($(this).is(':checked'))
{
switch ($value)
{
case "BLIPA":
$(':checkbox[value*="B"]').attr('disabled', true);
}
}
else
{
$(':checkbox').each(function()
{
}
}
});
});
我犯過什么錯誤嗎?
編輯:
好的,我已經解決了。 這是解決方案:
<script type="text/javascript">
$(function () {
$("input[type='checkbox']").click(function () {
var value = $(this).attr('value');
if ($(this).is(':checked')) {
var modules = FindModuleRules(value);
$(':checkbox[value*="' + modules[0] + '"]').attr('disabled', true);
$(':checkbox[value*="' + modules[1] + '"]').attr('disabled', true);
$(':checkbox[value*="' + modules[2] + '"]').attr('disabled', true);
$(':checkbox[value~="' + value + '"]').attr('disabled', false);
}
else {
var modules = FindModuleRules(value);
$(':checkbox[value*="' + modules[0] + '"]').attr('disabled', false);
$(':checkbox[value*="' + modules[1] + '"]').attr('disabled', false);
$(':checkbox[value*="' + modules[2] + '"]').attr('disabled', false);
}
});
function FindModuleRules(string) {
var modules = new Array();
var bRegex = /B/;
var lRegex = /L/;
var aRegex = /A/;
if (string.search(bRegex) != -1)
modules[0] = "B";
else
modules[0] = "X";
if (string.search(lRegex) != -1)
modules[1] = "L";
else
modules[1] = "X";
if (string.search(aRegex) != -1)
modules[2] = "A";
else
modules[2] = "X";
return modules;
}
});
首先,你必須在input
和[type="checkbox"]
之間沒有空格,因為它會在其他輸入元素中查找復選框( 這是無效的 )。
所以像
$('input[type="checkbox"]').click(function () {
$('otherselector').prop('disabled', this.checked);
});
如果沒有確切了解如何設置標記,就很難告訴您需要做什么。 然而,她是一個簡單的說明:
HTML
<input type="checkbox" id="ckall" /> Check 'em all!
<ul>
<li><input type="checkbox" /> Item 1</li>
<li><input type="checkbox" /> Item 2</li>
<li><input type="checkbox" /> Item 3</li>
<li><input type="checkbox" /> Item 4</li>
<li><input type="checkbox" /> Item 5</li>
</ul>
JS
$("input[type='checkbox']").click(function() {
$("ul :checkbox").attr("checked", $(this).is(":checked"));
});
根據您的標記, 正是你正在尋找做將決定你的jQuery選擇。 但是,我假設您要創建一個“全部檢查”類型的復選框。 如果是這樣,您將在小提琴中看到check all復選框事件然后選擇某個容器元素中的所有復選框。 如果你不這樣做,那么你也可能會更改check check all的狀態。
$('input [type="checkbox"]').click(function () {
if($(this).is(':checked')) {
//do stuff
}
})
我已回答了這個問題。 謝謝你的幫助。
<script type="text/javascript">
$(function () {
$("input[type='checkbox']").click(function () {
var value = $(this).attr('value');
if ($(this).is(':checked')) {
var modules = FindModuleRules(value);
$(':checkbox[value*="' + modules[0] + '"]').attr('disabled', true);
$(':checkbox[value*="' + modules[1] + '"]').attr('disabled', true);
$(':checkbox[value*="' + modules[2] + '"]').attr('disabled', true);
$(':checkbox[value~="' + value + '"]').attr('disabled', false);
}
else {
var modules = FindModuleRules(value);
$(':checkbox[value*="' + modules[0] + '"]').attr('disabled', false);
$(':checkbox[value*="' + modules[1] + '"]').attr('disabled', false);
$(':checkbox[value*="' + modules[2] + '"]').attr('disabled', false);
}
});
function FindModuleRules(string) {
var modules = new Array();
var bRegex = /B/;
var lRegex = /L/;
var aRegex = /A/;
if (string.search(bRegex) != -1)
modules[0] = "B";
else
modules[0] = "X";
if (string.search(lRegex) != -1)
modules[1] = "L";
else
modules[1] = "X";
if (string.search(aRegex) != -1)
modules[2] = "A";
else
modules[2] = "X";
return modules;
}
});
我使用FindModuleRule函數對所有值字符串進行排序,並選出僅出現在某些值中的關鍵字符,如“A”,“L”或“B”(如果沒有找到)然后我分配給'X',這是在任何值字符串中找不到。 然后,我使用該字符選擇所有包含該字符的值的復選框,然后依次打開或關閉它們,然后將單擊的復選框切換到其相應的狀態。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.