Bootstrap Multiselectを使用して、選択した年の最大数が 4 になる年のリストを表示しています。4 年が選択されている場合は、選択されていないすべての年を無効にします。カウントを 3 にするために年が選択されていない場合は、すべての年を再度有効にします。
(そのプラグインのプロジェクトの最新のコミットは、有効化/無効化機能を追加することでしたが、それは個々の選択要素用ではないと思います - https://github.com/davidstutz/bootstrap-multiselect/issues/171 )
私のHTML:
<select id="slYears" class="multiselect" multiple="multiple">
<option value="1" disabled="disabled">2009</option>
<option value="2" selected="selected">2010</option>
<option value="3" selected="selected">2011</option>
<option value="4" selected="selected">2012</option>
<option value="5" selected="selected">2013</option>
</select>
私のJavaScript(最初の試み):
$('#slYears').change(function () {
var arr = $(this).val().toString().split(',');
if (arr.length >= 4) {
$('#slYears option').each(function () {
if (!$(this).is(':selected')) {
$(this).prop('disabled', true);
}
});
}
else {
$('#slYears option').each(function () {
$(this).prop('disabled', false);
});
}
});
次に、プラグインのメソッドと例をいくつか使用してみました。「すべて選択」の例を使用してすべてを有効にしてみました。「onchange」イベントを使用してみましたが、どれも機能しません。
jsfiddle は次のとおりです: http://jsfiddle.net/389Af/1/ (上記の JS の前にプラグイン JS を貼り付けたことに注意してください)