选择2 onselect选项将选择所有其他选项
我在这个JSFIDDLE中提供了一个select 2。 如何选择一个选项调用All
将选择该选项字段中除自身之外的All
选项,这意味着All
选项更像是Select All按钮。 并取消选择All
。 将取消选择所有选项。 我从下面的jsfiddle提供相同的代码:
HTML:
All Option A Option B Option C Option D
Javascript:
$('#parent_filter_select2').select2({ placeholder: 'Select' });
非常感谢任何帮助,谢谢。
更新:我找到了类似于我想要的东西,但它使用了复选框,所以我想知道如何在All
选项而不是复选框上实现它,并且还使用它选择All
选项,代码如下:
$("#checkbox").click(function(){ if($("#checkbox").is(':checked') ){ //select all $("#parent_filter_select2").find('option').prop("selected",true); $("#parent_filter_select2").trigger('change'); } else { //deselect all $("#parent_filter_select2").find('option').prop("selected",false); $("#parent_filter_select2").trigger('change'); } });
Select2 github repo上存在一个未解决的问题,请参阅: select all / select none header
根据’bkdotcom’用户的建议(请参阅注释 ),您可以定义selectAllAdapter
并将其与Select2(版本4)一起使用。
检查您的小提琴更新: https : //jsfiddle.net/beaver71/tjvjytp3/
或者这个片段:
/* Define the adapter so that it's reusable */ $.fn.select2.amd.define('select2/selectAllAdapter', [ 'select2/utils', 'select2/dropdown', 'select2/dropdown/attachBody' ], function (Utils, Dropdown, AttachBody) { function SelectAll() { } SelectAll.prototype.render = function (decorated) { var self = this, $rendered = decorated.call(this), $selectAll = $( '' ), $unselectAll = $( '' ), $btnContainer = $('').append($selectAll).append($unselectAll); if (!this.$element.prop("multiple")) { // this isn't a multi-select -> don't add the buttons! return $rendered; } $rendered.find('.select2-dropdown').prepend($btnContainer); $selectAll.on('click', function (e) { var $results = $rendered.find('.select2-results__option[aria-selected=false]'); $results.each(function () { self.trigger('select', { data: $(this).data('data') }); }); self.trigger('close'); }); $unselectAll.on('click', function (e) { var $results = $rendered.find('.select2-results__option[aria-selected=true]'); $results.each(function () { self.trigger('unselect', { data: $(this).data('data') }); }); self.trigger('close'); }); return $rendered; }; return Utils.Decorate( Utils.Decorate( Dropdown, AttachBody ), SelectAll ); }); $('#parent_filter_select2').select2({ placeholder: 'Select', dropdownAdapter: $.fn.select2.amd.require('select2/selectAllAdapter') });
您可以使用手动选择选项
$('#parent_filter_select2').select2('val', values);
选择选项All
来自您的下拉列表。
你可以把values
作为javascript数组。
var values = new Array(); $('#parent_filter_select2').find('option').each(function () { var opt= $(this); var opvalue= opt.attr('value'); if(opvalue != "all") values.push(opvalue); });
示例代码在这里。
$('body').on('change', '#parent_filter_select2', function () { var val = $(this).val(); //alert(val); if(val.indexOf('all') != -1){ $('#parent_filter_select2').select2('val', values); } else{ $('#parent_filter_select2').select2('val', val); } });
你可以在这里查看jsfiddle演示
看看它有帮助..
使用以下脚本
$("#parent_filter_select2 option").click(function () { var val = $(this).attr("value"); if(val == 'all'){ $('#parent_filter_select2 option').prop('selected', true); $('#parent_filter_select2 option[value="all"]').prop('selected', false); } });