Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Getting all select2 instance in DOM

Im trying to unbind keypress when select2 is focus, this seems to work

 $('#someId').on('select2-focus',function(){
    $(document).unbind('keypress');
});

but i want to get all select2 instance, i have tried

 $('.select2').on('select2-focus',function(){
    $(document).unbind('keypress');
});

but it is not working, i dont want to add ".custom_class" in each select2 i have in my page. can someone help me on this one? Thanks in advance.

like image 439
jay temp Avatar asked Jun 03 '26 18:06

jay temp


2 Answers

In case anyone was still interested in the answer for the original question, i.e., „Getting all select2 instance in DOM“:

// The $element can be a narrower scope, or the entire document.
$element = $(document);
$element.find('select').each(function (i, select) {
    var $select = $(select);

    // Make sure that the select has Select2.
    if($select.hasClass("select2-hidden-accessible")) {
         // Perform your action, e.g.:
         $select.on('select2-focus',function(){
             $(document).unbind('keypress');
         });
         // You can also use the console for debugging:
         // console.log($select);
    }
});

The $select.hasClass("select2-hidden-accessible") check is taken from the original docs: https://select2.org/programmatic-control/methods#checking-if-the-plugin-is-initialized

But notice, that the 'select2-focus' event might not exist anymore, as it is not listed here: https://select2.org/programmatic-control/events . You should be able to use $select.find('.select2-selection__rendered').on('focus', function ...), but I did not test that.

For a working example of how this can be used, see my jsfiddle for a Select2 issue. Notice the function unobscurePlaceholdersOfSelect2().

like image 142
Jan Bradáč Avatar answered Jun 06 '26 08:06

Jan Bradáč


jQuery('.select2-container').each(function(i,el){
    $(el).data('select2').close()
})
like image 38
Nikita Makarov Avatar answered Jun 06 '26 09:06

Nikita Makarov



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!