Javascript 自举多选极限问题
我使用创建了一个多选下拉列表。 我需要在选项选择中设置一个限制(这里我将其设置为5),如果达到限制,我只需禁用其他选择光电管,它就可以正常工作。但问题是,当我尝试使用SHIFT键选择5个以上时。它不起作用(意味着我的jQuery阻止选择不起作用),我可以选择5个以上。请检查代码片段并给我一个解决方案Javascript 自举多选极限问题,javascript,jquery,html,css,twitter-bootstrap,Javascript,Jquery,Html,Css,Twitter Bootstrap,我使用创建了一个多选下拉列表。 我需要在选项选择中设置一个限制(这里我将其设置为5),如果达到限制,我只需禁用其他选择光电管,它就可以正常工作。但问题是,当我尝试使用SHIFT键选择5个以上时。它不起作用(意味着我的jQuery阻止选择不起作用),我可以选择5个以上。请检查代码片段并给我一个解决方案 jQuery(“#软技能列表”)。多选({ 启用筛选:正确, 最大高度:400, enableCaseInsensitiveFiltering:正确, 非选择性文字:“软技能*”, 显示的数字:
jQuery(“#软技能列表”)。多选({
启用筛选:正确,
最大高度:400,
enableCaseInsensitiveFiltering:正确,
非选择性文字:“软技能*”,
显示的数字:2,
selectAll:false,
onChange:函数(选项,选中){
//获取选定的选项。
var selectedOptions=jQuery('soft#u skill_list option:selected');
如果(selectedOptions.length>=5){
//禁用所有其他复选框。
var nonSelectedOptions=jQuery('soft#skill_list option')。过滤器(函数(){
return!jQuery(this).is(':selected');
});
非选择选项。每个(函数(){
var input=jQuery('input[value=“”+jQuery(this.val()+”));
input.prop('disabled',true);
input.parent('li').addClass('disabled');
});
}
否则{
//启用所有复选框。
jQuery('#软技能列表选项')。每个(函数(){
var input=jQuery('input[value=“”+jQuery(this.val()+”));
input.prop('disabled',false);
input.parent('li').addClass('disabled');
});
}
}});代码>
分析数据
宴会业务
礼宾部业务
客户服务体验
计量
微秒
计算能力
开业酒店
歌剧院
外部餐饮
开业前
程序
精通计算机编程
演讲经验
预订
食肆经营
收入分析
客房部
安全和安保
销售管理
销售业务
社会化媒体
如果选择了5个以上的选项,则需要单独验证
if (selectedOptions.length >= 5) {
if (selectedOptions.length > 5) {
// Show error
} else {
// What you do already
}
当一次选中一个复选框时,它们不能超过5。单击列表选项时,需要阻止Shift键。
尝试下面的jQuery
请在这里查看->
如果同一页面中有多个具有相同选项值的multiselect,请确保在启用/禁用复选框时添加了正确的选择器功能,必须替换此行
var input = jQuery('input[value="' + jQuery(this).val() + '"]');
为此
var input = jQuery('#soft_skill_list + .btn-group input[value="' + jQuery(this).val() + '"]');
否则,您也将禁用其他multiselect控件中的其他复选框
我将是这样的:
jQuery('#soft_skill_list').multiselect({
enableFiltering: true,
maxHeight:400,
enableCaseInsensitiveFiltering:true,
nonSelectedText: 'Soft Skills *',
numberDisplayed: 2,
selectAll: false,
onChange: function(option, checked) {
// Get selected options.
var selectedOptions = jQuery('#soft_skill_list option:selected');
if (selectedOptions.length >= 5) {
// Disable all other checkboxes.
var nonSelectedOptions = jQuery('#soft_skill_list option').filter(function() {
return !jQuery(this).is(':selected');
});
nonSelectedOptions.each(function() {
var input = jQuery('#soft_skill_list + .btn-group input[value="' + jQuery(this).val() + '"]');
input.prop('disabled', true);
input.parent('li').addClass('disabled');
});
}
else {
// Enable all checkboxes.
jQuery('#soft_skill_list option').each(function() {
var input = jQuery('#soft_skill_list + .btn-group input[value="' + jQuery(this).val() + '"]');
input.prop('disabled', false);
input.parent('li').addClass('disabled');
});
}
}});
我试过这个。但它不起作用。请你把新代码更新到fiddle好吗。并显示其工作状态。它只是显示一个警报。但这并不能阻止选项的选择。它仍然在继续这个问题。如果我们选择超过5个,我不想被选中。我想你明白我的问题了吗?是吗?抱歉耽搁了。是的,我明白。让我来解决这个问题。好的。谢谢@GerardPlease在JSFIDLE中更新。虽然我可以检查,请稍候。。。将立即更新哦,这很有效。令人惊叹的。谢谢@阿伦
jQuery('#soft_skill_list').multiselect({
enableFiltering: true,
maxHeight:400,
enableCaseInsensitiveFiltering:true,
nonSelectedText: 'Soft Skills *',
numberDisplayed: 2,
selectAll: false,
onChange: function(option, checked) {
// Get selected options.
var selectedOptions = jQuery('#soft_skill_list option:selected');
if (selectedOptions.length >= 5) {
// Disable all other checkboxes.
var nonSelectedOptions = jQuery('#soft_skill_list option').filter(function() {
return !jQuery(this).is(':selected');
});
nonSelectedOptions.each(function() {
var input = jQuery('#soft_skill_list + .btn-group input[value="' + jQuery(this).val() + '"]');
input.prop('disabled', true);
input.parent('li').addClass('disabled');
});
}
else {
// Enable all checkboxes.
jQuery('#soft_skill_list option').each(function() {
var input = jQuery('#soft_skill_list + .btn-group input[value="' + jQuery(this).val() + '"]');
input.prop('disabled', false);
input.parent('li').addClass('disabled');
});
}
}});