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
Auteur
Réponse acceptée

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.

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