chosen with bootstrap 3 not working properly

后端 未结 6 716
醉话见心
醉话见心 2020-12-08 04:19

I have this code which triggers a bootstrap modal and load its content via $.load(). the page I\'m loading has a select element which I\'m calling chosen on. He

相关标签:
6条回答
  • 2020-12-08 04:59

    Try this, I digged in chosen and found out that just need to pass options with "width" property like in this, or any other width value:

    $("select").chosen({width: "inherit"}) 
    
    0 讨论(0)
  • 2020-12-08 04:59

    I had the same problem today but I needed a quickly solution... but firs a screenshot of my problem:

    This is my problem

    so I did this:

    1) The problem is the "width", so I saw on console this

    take a look on the console, over the "select"

    2) I made a quickly solution adding a new "width". As you can see in the previous image, there is a class 'class="chosen-container chosen-container-single', so I took the class "chosen-container" to add the new "width" when I call my "Modal". Here my code:

    just add one line

    so, basically I added this code:

    $('.chosen-container').css({ 'width':'350px' });
    

    to the function that call the modal. Feel free to copy and paste this on your function :) Maybe it is not a perfect solution but it works for me and maybe for you too.

    sorry for my english, but I'm learnig. I speak spanish better than english. Greetings

    PD: There is my result

    0 讨论(0)
  • 2020-12-08 05:05

    Adding width to your chosen class will solve this problem.

    $('.someClick').click(function(e){
       e.preventDefault();
       x.modal('show');
       x.on('shown.bs.modal', function(){
           x.find('.modal-body').load('path/page.html', function(response, status, xhr){
               if(status == "success"){
                   $("select[name=elementName]").chosen({ width:'100%' }); /* add width here !!! */
               }
           });
       });
    });
    
    0 讨论(0)
  • 2020-12-08 05:05

    The following solution worked for me (from http://codepen.io/m-e-conroy/pen/ALsdF):

    Redefine "modal" class:

    .modal { 
        display: block;
    }
    
    0 讨论(0)
  • 2020-12-08 05:13

    Applying Chosen after the modal is shown should solve your problem:

    $('#myModal').on('shown.bs.modal', function () {
      $('.chosen-select', this).chosen();
    });
    

    Or when Chosen was already applied, destroy and reapply:

    $('#myModal').on('shown.bs.modal', function () {
      $('.chosen-select', this).chosen('destroy').chosen();
    });
    

    Fiddle here: http://jsfiddle.net/koenpunt/W6dZV/

    So in your case it would probably something like:

    $('.someClick').click(function(e){
       e.preventDefault();
       x.modal('show');
       x.on('shown.bs.modal', function(){
           x.find('.modal-body').load('path/page.html', function(response, status, xhr){
               if(status == "success"){
                   $("select[name=elementName]").chosen();
               }
           });
       });
    });
    

    EDIT

    To complement Chosen you can use the Chosen Bootstrap theme

    0 讨论(0)
  • 2020-12-08 05:14

    As described in Allow Chosen to be used in Bootstrap modal, the problem is within the chosen.jquery.js file. I found it on line 435 and just added the following code inside the else statement. check it out, it worked for me.

    // Fixing problem when the select is not displayed.
       if ( this.form_field.offsetWidth == 0 ) {
          return "" + $(this.form_field).width() + "px";
        }
    
    0 讨论(0)
提交回复
热议问题