我正在使用multiselect用于不同的主题我想要将select最多限制为2,并且如果用户取消选择,则以相同的方式禁用其他选项。再次,该选项必须对用户可用。
<select multiple="multiple" class="subjects" name="subjects[]" style="float:left;width:205px;" size="5">
<option value='1'>subject1</option>
<option value='2'>subject2</option>
<option value='3'>subject3</option>
<option value='3'>subject3</option>
</select>
到目前为止,我已经取消选择仅在2之后选择的最后一个选项,代码如下
/**
* Make sure the subject's limit is 2
*/
$(".subjects option").click(function(e){
if ($(this).parent().val().length > 2) {
$(this).removeAttr("selected");
}
});
谢谢。
答案 0 :(得分:5)
改进了jQuery示例,注意(else enable)选项,这修复了以前禁用select选项的示例的永久性错误。同时删除了“请仅选择两个选项”。可能时出现错误消息。 http://jsfiddle.net/c9CkG/25/
jQuery(document).ready(function () {
jQuery("select").on("change", function(){
var msg = $("#msg");
var count = 0;
for (var i = 0; i < this.options.length; i++)
{
var option = this.options[i];
option.selected ? count++ : null;
if (count > 2)
{
option.selected = false;
option.disabled = true;
msg.html("Please select only two options.");
}else{
option.disabled = false;
msg.html("");
}
}
});
});
答案 1 :(得分:2)
作为RobG答案的改进,你可以取消选择一个选项,如果它计数&gt; 2。
有关使用jQuery的工作示例,请参阅:http://jsfiddle.net/c9CkG/3/。
function checkSelected(el) {
var msgEl = document.getElementById('msg');
var count = 0;
for (var i=0, iLen=el.options.length; i<iLen; i++)
el.options[i].selected? count++ : null;
// Deselect the option.
if (count > 2) {
el.options[i].selected = false;
el.options[i].disabled = true;
msgEl.innerHTML = 'Please select only two options';
}
}
答案 2 :(得分:1)
以下内容将完成这项工作:
function checkSelected(el) {
var msgEl = document.getElementById('msg');
var count = 0;
for (var i=0, iLen=el.options.length; i<iLen; i++)
el.options[i].selected? count++ : null;
msgEl.innerHTML = count > 2? 'Please select only two options' : '';
}
</script>
<span>Please select a maximum of two options:</span>
<select multiple onchange="checkSelected(this);">
<option>0
<option>1
<option>2
<option>3
</select>
<br>
<span id="msg"></span>
我认为禁用选项不是一个好主意,您只关心在提交表单时只选择了两个选项。在那之前,没关系。
答案 3 :(得分:0)
column1|column3
a|1
a|2