Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 自举多选极限问题_Javascript_Jquery_Html_Css_Twitter Bootstrap - Fatal编程技术网

Javascript 自举多选极限问题

Javascript 自举多选极限问题,javascript,jquery,html,css,twitter-bootstrap,Javascript,Jquery,Html,Css,Twitter Bootstrap,我使用创建了一个多选下拉列表。 我需要在选项选择中设置一个限制(这里我将其设置为5),如果达到限制,我只需禁用其他选择光电管,它就可以正常工作。但问题是,当我尝试使用SHIFT键选择5个以上时。它不起作用(意味着我的jQuery阻止选择不起作用),我可以选择5个以上。请检查代码片段并给我一个解决方案 jQuery(“#软技能列表”)。多选({ 启用筛选:正确, 最大高度:400, enableCaseInsensitiveFiltering:正确, 非选择性文字:“软技能*”, 显示的数字:

我使用创建了一个多选下拉列表。 我需要在选项选择中设置一个限制(这里我将其设置为5),如果达到限制,我只需禁用其他选择光电管,它就可以正常工作。但问题是,当我尝试使用SHIFT键选择5个以上时。它不起作用(意味着我的jQuery阻止选择不起作用),我可以选择5个以上。请检查代码片段并给我一个解决方案

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');
                });
            }
        }});