根据其值和所选选项禁用/启用复选框

我需要对启用/禁用的复选框的值进行硬编码,具体取决于所选的选项值。 我试图做这样的事情:

$("#Units").on("change", function () { if ($(this).val() !== "Finance") { $(".dissable").val("3").prop("disabled", true); $(".dissable").val("4").prop("disabled", true); } else { $(".dissable").val("3").prop("disabled", false); $(".dissable").val("4").prop("disabled", false); } }).trigger('change'); 
    Marketing   Finance   Operations    chbx1  chbx2  chbx3  chbx4 

但没有预期的效果,应该是这样的:

  • 当我选择其他选项时,“财务”,复选框号。 3和4被禁用。
  • 对于“财务”,将启用所有复选框。

我需要根据复选框值执行此操作,而不仅仅是类。

使用以下选择器:

 $(".dissable[value='3']").prop("disabled", true); 

[value='3']根据值创建选择。 见工作示例:

 $("#Units").on("change", function () { if ($(this).val() !== "Finance") { $(".dissable[value='3']").prop("disabled", true); $(".dissable[value='4']").prop("disabled", true); } else { $(".dissable[value='3']").prop("disabled", false); $(".dissable[value='4']").prop("disabled", false); } }).trigger('change'); 
    chbx1  chbx2  chbx3  chbx4 

您需要根据值过滤复选框,因此请使用$.fn.filter 。 目前,您使用$(".dissable").val("3")设置其值$(".dissable").val("3")

将匹配元素集减少到与选择器匹配的元素或传递函数的测试。

 $("#Units").on("change", function () { //Filter checkboxes whose value is 3 or 4 $(".dissable").filter(function(){ return $(this).val() == 3 || $(this).val() == 4; }).prop("disabled", $(this).val() == "Finance"); //disable or enable based on condition }).trigger('change'); 

DEMO

尝试缓存$(".dissable") ,在缓存选择器上使用.slice()

 function check() {} var disable = $(".dissable"); $("#Units").on("change", function() { if ($(this).val() !== "Finance") { // disable `.dissable` at index `2,` `3` disable.slice(2, 4).prop("disabled", true); } else { // enable `.dissable` at index `2,` `3` disable.slice(2, 4).prop("disabled", false); } }).trigger("change"); 
   chbx1 chbx2 chbx3 chbx4