Bouton de dialogue jQuery ignoré, continuez à soumettre le formulaire
P粉832212776
P粉832212776 2023-08-15 12:55:00
0
1
456

J'ai le code de formulaire suivant et le code javascript est affiché ci-dessous. Le problème est que lors de l'exécution de validateDialogForm(), si certaines conditions sont remplies, une boîte de dialogue jquery s'affichera. Je peux effectivement voir la boîte de dialogue apparaître pendant quelques secondes, mais elle ne restera pas là et le formulaire continue d'être soumis. Je souhaite que le formulaire soit mis en pause pendant un moment et soumis uniquement lorsque l'utilisateur clique sur le bouton Enregistrer J'ai essayé d'ajouter return false; avant la fin de la fonction validateDialogForm() La soumission du formulaire ne se poursuivra pas, mais restera telle quelle. Qu'est-ce que je fais de mal ici ? L'état actuel du code ci-dessous est que le formulaire continuera à être soumis quelle que soit la boîte de dialogue jquery.(为了清晰起见,删除了很多不相关的代码)


$('#checklist_dialog').hide(); fonction validateDialogForm() { $('#checklist_dialog').show(); var estConfirmé = faux; //STEP:1 Vérifiez si l'option B est sélectionnée. var selectedVal = ""; var sélectionné = $("input[type='radio'][name='sampleChoice']:checked"); if (selected.length > 0) { selectedVal = sélectionné.val(); console.log("L'option sélectionnée est " + selectedVal); } if (selectedVal === "choixB") { if ($("#choiceBstatus").val() === "true") { //afficher la boîte de dialogue $('#checklist_dialog').dialog({ modal : vrai, largeur maximale : 600, hauteur maximale : 500, largeur : 600, hauteur : 500, superposition : { opacité : 0,7, fond : "noir" }, boutons: { "ENREGISTRER": fonction() { $(this).dialog('close'); alert("À l'intérieur du bouton SAVE sur lequel l'utilisateur clique"); $("#choiceBstatus").val("false"); //isConfirmé = vrai ; renvoie vrai ; }, "ANNULER": fonction() { $(this).dialog('close'); alert("Vous devez compléter/sauvegarder la checklist avant de sauvegarder votre formulaire !"); // renvoie faux ; } } }); /* e.preventDefault(); renvoie faux ; */ } //fin de if($("#choiceBstatus").val() == true ){ if ($("#choiceBstatus").val() === "false") { // renvoie vrai ; } } //fin de if(selectedVal === "choiceB"){ //retourne faux ; /* si(estConfirmé){ renvoie vrai ; } autre { renvoie faux ; } */ } 
//quelques divs
≪/tr>


P粉832212776
P粉832212776

répondre à tous (1)
P粉764836448

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 fonctiononsubmit! Un bon moyen consiste à installer un drapeau. Voir le pseudocode ci-dessous qui devrait essentiellement faire ce que vous voulez.

...
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; }
    Derniers téléchargements
    Plus>
    effets Web
    Code source du site Web
    Matériel du site Web
    Modèle frontal
    À propos de nous Clause de non-responsabilité Sitemap
    Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!

    -