4 Réponses :


0
votes

Une solution simple serait de définir un drapeau qui vérifie si vous avez déjà cliqué sur "oui": xxx pré>

voir ici pour un travail jsfiddle p>

Une autre solution serait de désactiver la soumission du formulaire (à l'aide d'E.PreventDefault ()) et de poster les données du formulaire Manuellement après avoir cliqué sur "Oui" à l'aide d'Ajax: P>

$(function() {
  $("#dialog-confirm").dialog({
    resizable: false,
    height:190,
    autoOpen: false,
    width: 330,
    modal: true,
    buttons: {
      "Yes": function() {
        $.ajax({
          type: "POST",
          url: $('#myform').attr('action'),
          data: $('#myform').serialize(),
          success: function(response) {
            console.log('form submitted');
          }
        });
      },
      "No": function() {
        $("#dialog-confirm").dialog("close");
      }
    }
  });

  $('#myform').on('submit', function(e) {
    e.preventDefault();
    $("#dialog-confirm").dialog('open');
  });
});


1 commentaires

Merci..well, vous pouvez voir la première solution ici, qui ne semble pas soumettre à USC.THRIVEZONE. org / z.php Je ne peux pas vraiment utiliser une solution Ajax à cause de la façon dont le site fonctionne.



2
votes

Le problème que vous rencontrez est: lorsque vous cliquez sur Oui, le gestionnaire de soumission est appelé à nouveau.

Pour résoudre ce problème, vous pouvez utiliser le Événement déclencheur avec extraparamètres afin de distinguer si la soumission est déclenchée dans la boîte de dialogue ou non.

car la boîte de dialogue est asynchrone que vous pouvez Utilisez une approche différée, une vieille réponse que j'ai donnée ici .

Le code et Jsfiddle : xxx < Pré> xxx


9 commentaires

On dirait que cela devrait fonctionner..Je a ajouté ce que vous suggérez, mais cela ne soumet toujours pas (même lorsque j'essaie d'exécuter l'extrait de code sur ce site)


Oui, vous pouvez le voir ici (en cours d'exécution sur un serveur Cloud) USC.thrivezone.org/z.php < / a>


Ce n'est pas du moins pour moi. Cela devrait dire "soumis" après son soumission avec succès.


OK..Je mettez votre code exact sur mon site USC.thrivezone.org/z.php et je ne l'obtiens toujours pas (j'ai pris les alertes que vous avez ajoutées). En ce qui concerne le message après son envoi, je veux juste que cela soumettait et j'utilise PHP pour ECHO soumis s'il soumet en fait.


OK..Quand j'utilise une plaine sur le retour confirma, comme sur cette vidéo, vous pouvez voir que j'ai une réponse de soumission. Ce n'est pas ce que j'obtiens avec l'autre code. DB.TT/K7WLUGPIS


Voici le lien correct Dropbox.com /s/sd49wwr2NRSXC8G/2016-12-04_16-10-55.mp4?dl=0


@Tallen Le message que vous voyez après la soumission est généré à partir du côté du serveur PHP: si le PHP fonctionne comme une requête postale, un nouveau message est ajouté à la page. Pour plus de détails, voir Stackoverflow.com/Questtions/359047/...


Droite..J'ai eu ce code sur ma page pour le dernier jour ou plus.


@Tallen je suis content pour toi.



0
votes

$("#dialog-confirm").dialog({
  resizable: false,
  height: 190,
  autoOpen: false,
  width: 330,
  modal: true,
  buttons: [{
    text: "Yes",
    click: function() {
      console.log("ASD");
      $(this).dialog("close");

      $('#myform').attr("data-submit", "true").submit();
    }
  }, {
    text: "No",
    click: function() {
      $(this).dialog("close");
    }
  }]
});

$('#myform').on("submit", function() {
  var attr = jQuery(this).attr("data-submit");
  if (attr == "false") {
    $("#dialog-confirm").dialog('open');
    return false;
  }
});


11 commentaires

Merci .... ça va dérouter ... Je vois cela fonctionne dans Jsfiddle, mais si vous allez ici (où j'ai copié votre code), il ne fait pas de tirer le modal. USC.thrivezone.org/z.php Y a-t-il quelque chose qui me manque?


Peut supprimer cette alerte de ligne (attr) ;. Généralement, si vous souhaitez déboguer du code JS un meilleur moyen est d'utiliser console.log ("Titre d'erreur", "Message", anyvar, autrevar, ..);


En outre, lorsque vous utilisez exactement votre code ici USC.thrivezone.org/z.php, le modal ouvre et soumet ensuite avant tout clic.


Le code a une erreur à $ ('# myform') .. sur ('Soumettre', fonction (E). Vous devez placer un "." Donc, il devrait être $ ('# myform'). Sur ('Soumettre ', fonction (e)


merci..fixed que ... maintenant si vous essayez à nouveau, cela ne fonctionnera pas car il soumet immédiatement


Vous avez une autre erreur: "elem.getCliverRects n'est pas une fonction". Pour résoudre ce problème, cochez ce sujet Stackoverflow.com/Questtions/37914869/...


Je ne reçois pas cette erreur..Ce référence semble être pour un problème différent ... Comment voyez-vous cela dans mon code (qui est en fait votre code)?


C'est un problème différent. Mais pour le code JS pour travailler, la page devrait être exempte d'erreur JS. Je vois cette erreur en utilisant Firebug. Vous pouvez utiliser n'importe quel outil de développeur de navigateur et vérifier la section Console pour voir l'erreur.


Oui, j'utilise Firebug ... Voici une vidéo de votre code exact sur mon serveur et vous ne verrez aucune erreur et il soumet immédiatement DB.TT/PNXER8LYHK


À côté du mot console dans l'onglet Console, il y a une flèche. Cliquez dessus et assurez-vous que l'option "Afficher l'erreur JavaScript" est activée. Rechargez la page et réessayez.


Voir ici DB.TT/OL0USBBLX5 Toutes les erreurs JavaScript activées ... et il soumet immédiatement



12
votes

Essayez celui-ci ici. Au lieu de mettre un bouton Soumettre, apportez le bouton un bouton normal et gérer son événement de clic. Ensuite, vous venez de soumettre le formulaire si l'utilisateur clique sur oui em>. Vous avez également des erreurs de syntaxe telles que cette action de formulaire inutile

, supprimez l'action du tout, postez-vous sur le même formulaire.

Votre code légèrement modifié p> xxx pré>

update strud> p>

J'ai mis à jour mon code pour utiliser un champ masqué pour passer le mobile code> Variable POST à ​​PHP. Les modifications à l'intérieur du formulaire sont les suivantes: p> xxx pré>

2 strong> p>

Il apparaît que vous avez une erreur supplémentaire qui empêche le formulaire de soumettre les données. C'est la forme type = "post" code> qui est bien sûr incorrecte et de définir la méthode de formulaire correcte, vous devez utiliser méthody = "POST" CODE>: P>

<?php 

if(isset($_POST['moveOn']) && $_POST['moveOn'] == 'Yes') {
    echo '<h3>The form was posted!</h3>';
}

?>


3 commentaires

Jetez un coup d'oeil ici .. USC.thrivezone.org/z.php J'ai ce code si (Isset ($ _ Demande ['Moveon']) && $ _Request ['Moveon'] == 'Oui') {ECHO "ECHO" SOUMIS "; } Cela devrait entraîner le mot soumis d'être écho, mais ce n'est pas tout ce que je fais quelque chose de mal?


@Tallen oui vous avez absolument raison! S'il vous plaît vérifier ma réponse mise à jour.


@Tallen Oui, vous devez modifier le avec . S'il vous plaît jeter un oeil à ma réponse mise à jour.