Comme mentionné dans les commentaires, vous devez empêcher l'envoi du formulaire lorsque la bo?te de dialogue est affichée, car la bo?te de dialogue ne bloque pas l'interface utilisateur. Il continuera à se soumettre jusqu'à ce que vous l'arrêtiez. Après avoir appuyé sur le bouton dans la bo?te de dialogue, vous pouvez réellement soumettre le formulaire.
Maintenant, le problème est que lorsque vous soumettez le formulaire, cela déclenche également à nouveau la fonction onsubmit
?! Un bon moyen consiste à installer un drapeau. Voir le pseudocode ci-dessous qui devrait essentiellement faire ce que vous voulez.
<form id="orderForm" action="/mywebsite/order.htm" method="POST" onsubmit="return (validateOrderForm(this) && validateDialogForm(this))"> ...
let real_form_submit = false; function validateDialogForm(theForm){ if(!real_form_submit) { $('#checklist_dialog').dialog({ ... buttons: { "SAVE": function() { $(this).dialog('close'); real_form_submit = true; theForm.submit() }, "CANCEL": function() { $(this).dialog('close'); } } }); } return real_form_submit; }