J'ai utilisé du code d'une autre question posée il y a des années
Implémenter la confirmation de JQuery Modal dans un formulaire Soumettre? a > Mais cette question ne s'est pas allée assez loin pour montrer comment une forme pourrait être soumise lors de la réponse avec Oui et je n'ai pas pu obtenir cela pour travailler. P> Vous verrez tout le façons que j'ai essayé de faire du travail (ils sont commentés).
Est-ce que quelqu'un sait ce que je fais mal ici? P>
4 Réponses :
Une solution simple serait de définir un drapeau qui vérifie si vous avez déjà cliqué sur "oui": 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');
});
});
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.
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. p>
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 . p>
Le code et Jsfiddle : p>
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.
$("#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;
}
});
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
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
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
Voici une solution de travail qui est répondue avant:
Merci ..mais ces solutions n'utilisent pas de modal.