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.
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.