2017-08-27 213 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