Javascript 设置相扑下拉列表中的选择限制
我已经将这个jquery插件用于下拉选择复选框Javascript 设置相扑下拉列表中的选择限制,javascript,jquery,html,drop-down-menu,sumoselect.js,Javascript,Jquery,Html,Drop Down Menu,Sumoselect.js,我已经将这个jquery插件用于下拉选择复选框 <select multiple="multiple" class="SlectBox" name="cat_ids[]"> <option value="op1">Options1</option> <option value="op2">Options2</option> <option value="op3">Options3</option
<select multiple="multiple" class="SlectBox" name="cat_ids[]">
<option value="op1">Options1</option>
<option value="op2">Options2</option>
<option value="op3">Options3</option>
<option value="op4">Options4</option>
<option value="op5">Options5</option>
</select>
您可以使用sumo方法
unSelectAll
和selectItem
以及plugin init上的triggerChangeCombined
选项
参考:
在更改事件中,如果提高了限制,则可以取消选择“全部”,并通过每个元素的索引设置最后一个有效选择
代码:
演示:有更好的示例 别忘了triggerChangeCombined:真的
var last_selection = null;
var load_selection = false;
$('#SeasonIdList').change(function (event) {
if (load_selection == true) {
return false;
}
if ($(this).val() != null && $(this).val().length > 3) {
load_selection = true;
var $this = $(this);
$this[0].sumo.unSelectAll();
$.each(last_selection, function (i, e) {
$this[0].sumo.selectItem($this.find('option[value="' + e + '"]').index());
});
load_selection = false;
} else {
last_selection = $(this).val();
}
});
它正在工作,但当调用“$this[0].sumo.unSelectAll();“ALLOW error”无法为我读取null属性“length”时。我还找不到地方。我想是相扑
$('#island').SumoSelect({ triggerChangeCombined: true, placeholder: "TestPlaceholder" });
var last_valid_selection = null;
$('#island').change(function (event) {
if ($(this).val().length > 2) {
alert('You can only choose 2!');
var $this = $(this);
$this[0].sumo.unSelectAll();
$.each(last_valid_selection, function (i, e) {
$this[0].sumo.selectItem($this.find('option[value="' + e + '"]').index());
});
} else {
last_valid_selection = $(this).val();
}
});
var last_selection = null;
var load_selection = false;
$('#SeasonIdList').change(function (event) {
if (load_selection == true) {
return false;
}
if ($(this).val() != null && $(this).val().length > 3) {
load_selection = true;
var $this = $(this);
$this[0].sumo.unSelectAll();
$.each(last_selection, function (i, e) {
$this[0].sumo.selectItem($this.find('option[value="' + e + '"]').index());
});
load_selection = false;
} else {
last_selection = $(this).val();
}
});