Select2 après chargement Ajax

Par ribellu2b, il y a 10 ans


Bonjour,

Voici mon souci, je charge un formulaire dans une dialogWindow en Jquery :

$.ajax({ url: link, method: "POST", context: this, success: function (render) { dialogWindow.html('<div class="dialog-body">' + render.form + '</div>'); dialogWindow.css("min-width", "1000px"); dialogWindow.dialog({ autoOpen: false, width: 'auto', resizable: true, modal: true }).parent().find('.ui-dialog-title').html(render.title); } });

voici le contenu du retour Ajax :

{% block particularJavascripts %} <script type="text/javascript"> $('#continent_countries').select2(); $('#continent_save').click(function (event) { event.preventDefault(); var url = $('#idFormContinent').attr('action'); var formdata = $('form[name=continent]').serialize(); loadingEditAddEntity($(".dialog-body")); $.ajax({ type: "POST", url: url, data: formdata, async: true, dataType: "json", success: function (response) { $(".ui-dialog-content").dialog("close"); $(".jarviswidget-refresh-btn").trigger("click"); }, error: function (XMLHttpRequest, textStatus, errorThrown) { $(".dialog-body").html(XMLHttpRequest.responseJSON.table); $('#continent_countries').select2(); }, }); }); </script> {% endblock %} {{ form_start(form, { 'action' : '' ~ action ~ '', 'attr': {'class': 'smart-form', 'id': 'idFormContinent'}}) }} <fieldset> <section> <div class="form-group"> {{ form_label(form.name) }} {{ form_widget(form.name, {'attr': {'class': 'form-control'}}) }} <div class="txt-color-red">{{ form_errors(form.name) }}</div> </div> </section> <section> <div class="form-group"> {{ form_label(form.countries) }} {{ form_widget(form.countries, {'attr': {'class': 'form-control custom-scroll'}}) }} <div class="txt-color-red">{{ form_errors(form.countries) }}</div> </div> </section> </fieldset> <footer> {{ form_widget(form.save, {'attr': {'class': 'btn btn-primary'}}) }} {{ form_rest(form) }} {{ form_end(form) }} </footer>

la ligne de code :

$('#continent_countries').select2();

fonctionne bien au premiere chargement de la dialogWindow, mais pas la 2eme fois etc !!

Et je ne comprends pas pourquoi.

2 réponses

ribellu2b, il y a 10 ans

J'ai oublié de préciser sur j'utilise Symfony2

ribellu2b, il y a 10 ans

J'ai trouvé :

dialogWindow.dialog({ autoOpen: false, width: 'auto', resizable: true, modal: true, close: function() { $(this).remove(); } }).parent().find('.ui-dialog-title').html(render.title);

j'ai ajouté l'option "close", pour dire à Jquery qu'il doit détruire la dialogWindow.