Question

J'ai une forme (signup.php) qui apparaît dans une fenêtre nyroModal lorsque je clique sur un bouton:

<input value="Edit" class="nyroModal" type="button" href="signup.php">

Je voudrais utiliser une certaine forme de validation AJAX (pour vérifier si le nom d'utilisateur a été prise, par exemple) avant de soumettre le formulaire.

J'ai eu ceci à l'esprit: Lorsque l'utilisateur clique sur le bouton « Soumettre ». il appelle la fonction javascript avec onClick qui envoie les champs obligatoires à un script PHP qui retourne si les champs sont valides. Ensuite, si le champ est invalide, il avertit l'utilisateur, mais lorsque le champ est valide, il soumet le formulaire par quelque chose comme $('#formid').submit();. Assez facile en théorie.

et

Le problème est, lorsque le nyroModel obtient la nouvelle forme à partir d'une URL, et crée un div dans les DOM avec le contenu en elle, Firefox ignore complètement toutes les balises <script>. En utilisant Firebug, je peux le voir obtient réellement les balises <script> avec la réponse, mais Firefox les ignore. De plus, je ne peux pas créer une fonction jQuery sur la page que le modèle est appelé à partir, parce que lorsque le document est créé, la forme n'existe pas dans DOM encore.

Toutes les idées comment résoudre ce problème?

Était-ce utile?

La solution

Essayez d'ajouter un gestionnaire à soumettre le formulaire:

onClick='return frmSubmit()'

Dans ce gestionnaire, vous devez d'abord sérialiser les données du formulaire et le soumettre au script de validation. Assurez-vous de return false après l'émission de la demande, comme cela se fait de manière asynchrone. Dans le rappel de réponse, vous implémentez ce qui suit: si la réponse indique que l'entrée est valide, vous soumettez programatically le formulaire avec la méthode .submit(). Si, cependant, le Reponse indique que quelque chose ne va pas (vous devrez fournir les commentaires en format JSON), attacher des commentaires constructifs au formulaire pour l'utilisateur à lire.

Ne pas oublier d'attraper l'événement KeyPress et empêcher la soumission du formulaire lorsque vous appuyez sur Entrée, car il contournera votre fonction de validation.

Et, euh, une suggestion: il pourrait être préférable de faire toute la validation du côté client pour commencer, ce qui est généralement suffisant. Vous avez probablement entendu que la validation côté client peut être contournée, donc il y a encore un besoin de contrôle côté serveur. Cependant, je me sens toujours que si un utilisateur décide de jouer avec le système au sérieux, alors il est pas nécessaire de fournir une rétroaction constructive. Un simple message indiquant l'échec suffit. Donc, vérifiez d'abord l'entrée avec Javascript simple. Si quelque chose ne va pas, formuler des commentaires. Toutefois, si le serveur reçoit une entrée invalide (ce qui signifie que la validation côté client a été contournée), juste avertir l'utilisateur qu'il a échoué.

Autres conseils

vous pouvez utiliser quelque chose comme:

onClick='javascript: return myValidationFuncion()

Si votre fonction serait de vérifier si la valeur est valide, à savoir faire appel de service web là-bas. Si les valeurs non valable, il suffit de retourner faux afin d'arrêter l'exécution.

K

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top