Javascript jQuery:基于同级复选框整体切换禁用状态
HTML中的每个字段在文本输入旁边都有一个复选框,如下所示:Javascript jQuery:基于同级复选框整体切换禁用状态,javascript,jquery,html,jquery-selectors,Javascript,Jquery,Html,Jquery Selectors,HTML中的每个字段在文本输入旁边都有一个复选框,如下所示: 使用,很容易将每个复选框上的单击事件与其同级文本框的禁用状态联系起来——这已经很好地工作了: $(“输入[id^='checkbox'])。单击(函数(){ $(this.sides().prop(“已禁用”、!this.checked); }); 我无法理解的是,我可以运行一次类似的简明语句(从另一个事件中),该语句将根据相关复选框的当前选中状态切换所有这些文本框。这里大致是我假设的情况,但它只是在适当的情况下切换所有选项,而
使用,很容易将每个复选框上的单击事件与其同级文本框的禁用状态联系起来——这已经很好地工作了:
$(“输入[id^='checkbox'])。单击(函数(){
$(this.sides().prop(“已禁用”、!this.checked);
});
我无法理解的是,我可以运行一次类似的简明语句(从另一个事件中),该语句将根据相关复选框的当前选中状态切换所有这些文本框。这里大致是我假设的情况,但它只是在适当的情况下切换所有选项,而不是每个选项——即,它不起作用:
$('input[id^='textbox']).prop(“disabled”,$(this.prev().is(':checked'));
我也尝试过使用变更处理程序,但当复选框本身被重新启用时,它不会触发
有什么建议吗?如果我正确理解了您的意思,如果选中了相应的复选框,您希望启用文本输入。建议的办法:
$('input[type=“checkbox”]”)。在('change',function()上{
$(this.next().prop('disabled',!this.checked));
});代码>
除了更改
事件之外,除了相关的同级
查询之外,您还可以使用单击
事件来访问复选框旁边的文本框。在注释中的更新,您可以使用字段集
元素来实现您想要的:
$(“.field>:checkbox”)。在(“单击”,函数(){
如果($(this).is(“:checked”)){
$(this).sides(“fieldset”).removeAttr(“disabled”);
}否则{
$(this).this(“fieldset”).attr(“disabled”、“disabled”);
}
});代码>
测试1
测试2
Ah,很好的一点——更改处理程序是保持这些同步的一种很好的方法。我在问题中没有解释(因为我试图简化它)的是,我希望在其他更改之后启动启用/禁用功能——具体地说,可以禁用并重新启用表单的整个部分。更改处理程序无法捕获启用/禁用更改:(@E是否要同时禁用/启用所有文本输入?我有其他事件可以禁用或启用表单的整个部分。启用此部分后,我需要它根据文本字段的复选框触发文本字段的启用/禁用。启用复选框时,更改处理程序不会触发。@E是否要取消选中当启用其他事件时,是否卸载更改
侦听器?@e我很想帮助您,但我无法理解您的观点…:(更新了我的答案。正确。遗憾的是,我没有很好地解释为什么我要寻找一个一次性命令,我可以运行该命令,根据其复选框的状态启用/禁用所有字段。我可以执行的每个单击或更改事件。