Javascript 使用复选框禁用动态输入

Javascript 使用复选框禁用动态输入,javascript,html,jquery,Javascript,Html,Jquery,我有一个复选框/选择框,希望选中复选框时启用选择,取消选中时禁用选择 <p> <input id="option[21]" type="checkbox" name="checkbox[21]"> <select id="option[21]" name="select[21]" disabled><option value="">

我有一个复选框/选择框,希望选中复选框时启用选择,取消选中时禁用选择

<p>
<input id="option[21]" type="checkbox" name="checkbox[21]">
<select id="option[21]" name="select[21]" disabled><option value="">-</option><option value="1">Today</option><option value="2">Tomorrow</option></select>
</p>

<p>
<input id="option[22]" type="checkbox" name="checkbox[22]">
<select id="option[22]" name="select[22]"  disabled><option value="">-</option><option value="1">Today</option><option value="2">Tomorrow</option></select>
</p>

您的文档或任何版本的AFAIK中都有重复的ID,行为不规范,但通常是该文档。getElementById和document.querySelector将返回第一个元素

相反,您可以使用jQuery相对于单击的元素遍历DOM:

$document.on'change','input[type=checkbox]',functionevent{ 让$el=$this; $el.SISTERS'select'.PROPSDISABLED,!$el.is':选中'; }; -今天明天

-今天明天

您的文档或任何版本的AFAIK中都有重复的ID,行为不规范,但通常是该文档。getElementById和document.querySelector将返回第一个元素

相反,您可以使用jQuery相对于单击的元素遍历DOM:

$document.on'change','input[type=checkbox]',functionevent{ 让$el=$this; $el.SISTERS'select'.PROPSDISABLED,!$el.is':选中'; }; -今天明天

-今天明天
首先,您的HTML无效。节点的ID属性在文档范围内必须是唯一的。让和标记共享相同的ID违反了该规则

其次,使用从一个节点行2获取的ID属性选择另一个节点行6和8。如果有多个对象共享同一个ID,那么jQuery如何知道您指的是哪一个

第三,你的CSS选择器是错误的。您可以使用前面的哈希符号写入ID选择器

我建议:


为和标记引入唯一的id属性,但内部共享相同的数字,例如和首先,您的HTML无效。节点的ID属性在文档范围内必须是唯一的。让和标记共享相同的ID违反了该规则

其次,使用从一个节点行2获取的ID属性选择另一个节点行6和8。如果有多个对象共享同一个ID,那么jQuery如何知道您指的是哪一个

第三,你的CSS选择器是错误的。您可以使用前面的哈希符号写入ID选择器

我建议:


为和标记引入唯一的id属性,但在内部共享相同的数字,例如,我得到一个未捕获的SyntaxError:意外标记“.”错误。页面的源代码似乎正在删除变量?我不知道那里发生了什么-这是一个IDE问题或其他与答案中的代码无关的问题。我得到了一个未捕获的SyntaxError:意外的令牌“.”错误。页面的源代码似乎正在删除变量?我不知道那里发生了什么-这是一个IDE问题或其他与答案中的代码无关的问题。我花了太长时间来回答这里的JSFIDLE:,我保持了你的第二个复选框不变,但得到了你的第一个复选框是我正在处理的。您的ID重复出现,方括号导致了许多控制台错误,请尽量避免这样做。我花了太长时间来回答JSFIDLE:,我保持了您的第二个复选框不变,但您的第一个复选框是我处理的。你的ID被重复,方括号导致了很多控制台错误,请尽量避免这样做。
$(document).on('change', 'input[type=checkbox]', function(event) {
  var selectId = event.target.id;
  console.log(selectId);

  if ($(this).is(':checked')) {
    $(selectId).removeAttr('disabled');
  } else {
    $(selectId).prop( "disabled", true );
  }
});