国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Bouton de dialogue jQuery ignoré, continuez à soumettre le formulaire
P粉832212776
P粉832212776 2023-08-15 12:55:00
0
1
643
<p>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 <code>validateDialogForm()</code>, 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 <code>Enregistrer</code> J'ai essayé d'ajouter <code>return false;</code> avant la fin de la fonction <code>validateDialogForm()</code> 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.(為了清晰起見,刪除了很多不相關(guān)的代碼)</p> <p><br /></p> <pre class="brush:js;toolbar:false;">$('#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?; } */ }</pré> <pre class="brush:html;toolbar:false;"><form id="orderForm" action="/mywebsite/order.htm" method="POST" onsubmit="return (validateOrderForm(this) & ;& validateDialogForm())"> <input id="choiceBstatus" name="choiceBstatus" type="hidden" value="true"> <div id="ownerDisplayFields" style="visibilité?: visible;"> <table class="noPrint"> //quelques divs </tcorps> </tableau> </div> <div id="pManualTitle" style="display: block"> <table class="noPrint"> <corps> </tcorps> </tableau> </div> <div id="checklist_dialog" title="Nouveau titre" style="display: none;"> <p>La liste de contr?le 1 va ici</p> <p>La liste de contr?le 2 va ici </p> </div> <table class="noPrint"> <corps> <tr> <td align="center"><br> <input class="bouton" type="soumettre" nom="enregistrer" valeur="Enregistrer"> - <input class="button" type="submit" name="cancel" value="Annuler" onclick="bCancel = true;"> </td> ≪/tr> </tcorps> </tableau> <div></div> </form></pre> <p><br /></p>
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 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;
}
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal