Charger modal après l'envoi d'un formulaire
De page ici:
http://marcmurray.net/test_sites/cans/news.php
J'ai essayé de charger un message de confirmation modal pour un certain temps après que l'utilisateur envoie un e-mail, mais ne pouvez pas l'obtenir pour fonctionner.
Jusqu'à présent, j'ai essayé en faisant écho à l'ensemble du script, le déclenchement du script, et la modification de la valeur de hachage dans l'URL, et en vérifiant que, qui a travaillé dans d'autres zones du site.
Ajoutant des fonctions comme les alertes et en écho du texte sur la page fonctionne bien, mais lorsque j'utilise la méthode show il ne fonctionne pas. Ce qui m'amène à croire que je suis en échappant les caractères de mal, ou ne savent pas comment les auxiliaires modaux travailler un peu.
Quelqu'un peut-il voir où j'en suis gâcher?
PHP:
<?php
if(isset($_POST["submit"])) {
//Checking For Blank Fields..
if($_POST["vname"]==""||$_POST["vemail"]==""||$_POST["sub"]==""||$_POST["msg"]==""){
echo "Please fill out everything! We need to know who you are, and why you want to get in touch with us!";}
else
{
//Check if the "Sender's Email" input field is filled out
$email=$_POST['vemail'];
//Sanitize E-mail Address
$email =filter_var($email, FILTER_SANITIZE_EMAIL);
//Validate E-mail Address
$email= filter_var($email, FILTER_VALIDATE_EMAIL);
$emailConfirmed=$_POST['vemail'];
if (!$email){
echo "Don't forget to include your email adress! Otherwise we can't get back to you.";
}
else
{
$subject = $_POST['sub'];
$message = $_POST['msg'];
$headers = 'From:' . $emailConfirmed . "\r\n"; //Sender's Email
$headers .= 'Cc:' . $emailConfirmed . "\r\n"; //Carbon copy to Sender
//Message lines should not exceed 70 characters (PHP rule), so wrap it
$message = wordwrap($message, 70);
//Send Mail By PHP Mail Function
mail("[email protected]", $subject, $message, $headers);
echo "<script>$('#thankyouModal').modal('show')</script>";
};
}
}
?>
HTML pour la modale
<div class="modal fade" id="thankyouModal" tabindex="-1" role="dialog">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h4 class="modal-title" id="myModalLabel">Thank you for pre-registering!</h4>
</div>
<div class="modal-body">
<p>Thanks for getting in touch!</p>
</div>
</div>
</div>
</div>
EDIT: mise à Jour du code pour être plus simple que la question initiale.
source d'informationauteur ladanta
Vous devez vous connecter pour publier un commentaire.
Au lieu de l'appeler
modal show
méthode d'avance que tous les actifs de la charge d'abord, puis appeler lamodal show
méthode.Au lieu de devenir le script pourquoi ne pas détecter votre soumettre le formulaire avec javascript et ensuite afficher le modal?
Quelque chose comme
(Si vous utilisez JQuery)
Premier problème que je vois dans ton code d'exemple est, inutile \ sur code suivant.
echo "<script> \
. SupprimerDeuxième: Êtes-vous y compris tous les requis des fichiers js et css de bootstrap modal? Si vous n'êtes pas, Veuillez mettre à jour le code avec les lignes de code suivantes
Enfin il n'y a aucun évènement déclenché pour ouvrir modal bootstrap. Ajoutez le code suivant à déclencher le modal.
Code Final :
Espère que cette aide.
J'ai découvert que .dans (les jeux d'opacité à 1) de classe qui, je crois, doit être définie par Bootstrap n'affiche pas après la soumission du formulaire.
Btw. vous avez une erreur dans la console
C'est peut-être le problème..
Je voudrais faire cela....
Et, plus tard, de l'imprimer sur la partie droite à l'intérieur de votre tête à votre modèle html.
À l'aide de votre option et en ajoutant $(document).prêt à l'intérieur du script vous êtes en écho ne pense pas que serait le travail...le problème avec la dernière option est que vous fera l'écho de la script, mais jquery peut-être pas encore complètement chargé et il l'habitude de le reconnaître.
Donc, je suggère d'envoyer comme paramètre, puis l'imprimer.
Si vous n'êtes pas à l'aide d'un cadre et il est difficile pour vous de passer un paramètre, vous pouvez le faire à la pensée de l'URL et de faire quelque chose comme mon
project.com/result.php?submit=true
et à votre interface vous permettra de lire cette variable
Comme
Comme xkcd149 dit, si vous voulez dire à la charge de l'modale dans la même page sans la recharger, vous devriez être en utilisant des requêtes AJAX:
remplacer l'attribut onsubmit du formulaire pour une fonction qui envoie les données de la demande
dans la soumission de la fonction utilisée ci-dessus, ajouter de réussite et d'erreur rappels:
le succès de la fonction doit afficher le modal si l'renvoyé le code HTTP 200 (ou ce que vous voulez/besoin)
ou Vous pouvez créer manuellement un bouton après le formulaire de soumission et de déclencher cliquez sur le bouton pour ouvrir le modal.
Place de ces liens à votre balise HEAD:
puis modifiez ce qui suit:
:
Vous pouvez essayer aussi
Peut-être que vous devriez l'envoyer via le formulaire ajax, donc après l'événement submit vous n'avez pas à actualiser la page.
Tant que vous n'aurez pas de rafraîchir votre page, votre modal sera de charger correctement.
}
?>
en html