2017-08-27 212 views
0

我有4个复选框(所有,星期五,星期六和星期天),并且想要限制用户可以选择的选择:全部且没有其他选择或任何星期五到星期日的组合,但全部不允许被选中。限制复选框的选择基于其他复选框的选择

例1 所有被选中 周五,周六,周日都不准进行检查

例2. 周五和周日进行检查 所有不允许进行检查

以下JS代码正在工作,但我想知道是否有更好/更快/更优雅的方式来编写下面的JS。

Select Days:<br> 

<label><input type="checkbox" name="consultantDays" value="All">All</label> 

<br> 

<label><input type="checkbox" name="consultantDays" value="Friday">Friday</label> 

<br> 

<label><input type="checkbox" name="consultantDays" value="Saturday">Saturday</label> 

<br> 

<label><input type="checkbox" name="consultantDays" value="Sunday">Sunday</label> 

JS

<script> 
    /* Only allow All or (Friday, Saturday, Sunday) */ 
    $("input[name='consultantDays'").on('change', function() { 
     if ($(this).val() == 'All') { 
      $("input[name='consultantDays'").not(this).prop('checked', false); 
     } else { 
      $("input[value='All'").not(this).prop('checked', false); 
     } 
    }); 
</script> 

回答

1

你的代码工作完美,但你已经错过了属性选择器的右括号。

$("input[name='consultantDays']").not(this).prop('checked', false); 
          ^
} else { 
$("input[value='All']").not(this).prop('checked', false); 
        ^

/* Only allow All or (Friday, Saturday, Sunday) */ 
 
$("input[name='consultantDays'").on('change', function() { 
 
    if ($(this).val() == 'All') { 
 
    $("input[name='consultantDays']").not(this).prop('checked', false); 
 
    } else { 
 
    $("input[value='All']").not(this).prop('checked', false); 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
Select Days:<br> 
 

 
<label><input type="checkbox" name="consultantDays" value="All">All</label> 
 

 
<br> 
 

 
<label><input type="checkbox" name="consultantDays" value="Friday">Friday</label> 
 

 
<br> 
 

 
<label><input type="checkbox" name="consultantDays" value="Saturday">Saturday</label> 
 

 
<br> 
 

 
<label><input type="checkbox" name="consultantDays" value="Sunday">Sunday</label>

+0

感谢。有关改进代码的意见或者你会这样写吗? – waterloomatt

+0

看起来很好... – felixmosh