web-dev-qa-db-fra.com

Choisi mis à jour ne fonctionne pas

J'ai un menu déroulant choisi. J'ai changé le contenu des options et le déclencheur d'appel choisi: mis à jour mais choisi ne reconstruit pas la liste déroulante. C'est ma mise à jour 

<select name="shortcode" style="width: 150px; display: none;" class="chosen_select chzn-done" id="select_shortcode">
   <option value=""></option> 
   <option value="7183">7183</option>
   <option value="7983">7983</option>
</select>

Et ceci est une liste déroulante choisie (il devrait être reconstruit et supprimé les deux derniers <li>)

<ul class="chzn-results">
   <li id="select_shortcode_chzn_o_1" class="active-result" style="">7183</li>
   <li id="select_shortcode_chzn_o_2" class="active-result" style="">7983</li>
   <li id="select_shortcode_chzn_o_3" class="active-result" style="">8208</li>
   <li id="select_shortcode_chzn_o_4" class="active-result" style="">8308</li>
</ul>

Ceci est mon code jQuery:

$('#select_shortcode_mask').change(function(){
    var shortcode_mask = $('#select_shortcode_mask').val();
    $('#select_shortcode').empty();
    var shortcode = {"7X83":["7183","7983"],"8x08":["8208","8308"]};
    $('#select_shortcode').append("<option value=''></option>");
    if(jQuery.isArray(shortcode[shortcode_mask])){
            $.each( shortcode[shortcode_mask], function( subkey, subvalue ) {
                $('#select_shortcode').append("<option value='"+subvalue+"'>"+subvalue+"</option>");
            })
    } else {
        var full_shortcode = ["7183","7983","8208","8308"];
        if(jQuery.isArray(full_shortcode)){
            $.each(full_shortcode, function( subkey, subvalue ) {
                $('#select_shortcode').append("<option value='"+subvalue+"'>"+subvalue+"</option>");
            })
        }
    }
    $("#select_shortcode").trigger("chosen:updated");
});

RESOLU: J'utilise une version plus ancienne donc il devrait:

$("#select_shortcode").trigger("liszt:updated");

Alors bosse ^^ 

25
Tien Hoang

J'utilise fréquemment le plugin choisi, bien sûr, je rencontre ce problème plus d'une fois.

utiliser normalement .trigger("chosen:updated") peut le résoudre. Mais il y a juste une minute, cette méthode ne fonctionne plus, je me sens tellement confuse, car j'utilise la même fonction dans 2 fichiers js, disons le a.js et le b.js, cela fonctionne dans a.js, mais pas dans b.js. Je n'arrive pas à comprendre pourquoi ... j'ai presque perdu la tête !!!

Donc, je vérifie encore l'api.J'ai trouvé le .chosen("destroy"), m'a inspiré!

Et je pense que c’est la solution ultime: détruisez-la et reconstruisez-la.

$('.chosen').chosen("destroy").chosen();

Suis-je trop fort? : p

6
Kaiyu Lee

Votre fonction change appelle on change pour l'élément "#select_shortcode_mask". Votre liste de sélection a l'id: "#select_shortcode"

2
Hydrospanners

Code:

$('#test')
  .val(1)
  .trigger('liszt:update')
  .removeClass('chzn-done');

$('#test_chzn').remove();


$("#test").chosen({
  width: "220px",
  no_results_text: "test"
});
0
Steven Delgado

Mon chemin est-ce ...

$timeout(function() {
  $('#CampSrchId').trigger('chosen:updated');
}, 1000);

OR

window.setInterval(function() {
  $('#CampSrchId').trigger('chosen:updated');
}, 1000);      
0
Asad Ali Khan

J'ai utilisé

$("select").chosen({ width: "100%" });//chosen hack

Comme lors de l'utilisation de .trigger("chosen:updated");, cela ne semblait pas résoudre le problème. Cela semble hacky mais fonctionne bien.

0
Jamie Paterson