Formulaire AJAX validez et envoyez
J'ai créé un formulaire dans Drupal 7 et que vous voulez utiliser AJAX. J'ai ajouté à cela le bouton soumettre tableau:
"#ajax" => array(
"callback" => "my_callback",
"wrapper" => "details-container",
"effect" => "fade"
)
Cela fonctionne, mais l'ensemble de la fonction de validation est ignoré. Comment puis-je valider le formulaire avant de my_callback()
est appelé? Et comment puis-je afficher l'état ou des messages d'erreur sur l'AJAX formulaire?
source d'informationauteur Marius Ilie
Vous devez vous connecter pour publier un commentaire.
Cette question et la réponse a aidé à me guider vers la bonne solution, mais ce n'est pas exactement clair comme du cristal. Nous allons faire en sorte.
Choses à très connaître:
#ajax['wrapper']
#markup
mais plutôt parce qu'il est, y compris la div avec le wrapper set id.Voici le code qui a été travaillé pour moi en fonction de ce Marius mettre dans le commentaire ci-dessus:
Rien de tout cela fonctionne pour moi. Le formulaire de soumission de l'ajax fonction s'appelle simplement la fonction de rappel directement, sans passer par la validation, soumettre, et aussi de faire en sorte que le bouton ne peut pas être cliqué plusieurs fois. La validation des messages ne s'affichent PAS. J'ai littéralement copié et collé Joshua Stewardson code et il ne fonctionne pas.
Le fait que cette utilisation est tellement dur et sans-papiers est très pénible. Pour moi, cela semble plus élémentaires d'une demande d'AJAX formulaire de l'API. Ok, fait de la ventilation de ma frustration, sur la solution.
Voici ce que j'ai fait pour obtenir que cela fonctionne. Il se sent hacky et retardé. Il permettra également de briser s'il existe plusieurs instances de la forme sur une seule page, mais c'était le mieux que je puisse faire. Si quelqu'un peut faire la lumière sur cette s'il vous PLAÎT le faire!
Fondamentalement, vous devez remplacer l'ensemble de la forme avec lui-même à l'intérieur de votre rappel, manuellement et ajouter tout un ensemble de messages à l'objet de formulaire. Cela en déclarant le wrapper pour être l'id de votre formulaire (il va se casser s'il existe plusieurs instances de votre formulaire sur une seule page, parce que l'ID sera mis à jour).
J'ai trouvé une excellente solution à ce problème.
De crédit va à présent le blog de guy:
http://saw.tl/validate-form-ajax-submit-callback
La solution qu'il propose est la suivante:
Ok, je l'ai trouver. Apparemment, vous devriez retourner un tableau sur votre ajax fonction de rappel, pas juste un message texte...
Quelque chose comme ceci:
J'ai cherché de nombreuses heures pour une façon de le faire correctement. Malheureusement, la plupart de ces solutions s'appuient toujours sur Drupal du côté serveur de validation afin de déterminer si l'ajax résultats ou le côté client messages d'erreur doivent être placés dans le conteneur. En s'appuyant sur le serveur de résultat est plus lent que la validation côté client, ce qui devrait être quasi-instantanée. Aussi, le remplacement de la forme...avec une forme...avec les messages d'erreur est un peu trop bordélique pour ma préférence.
Utiliser jquery validation de méthodes pour déclencher une requête ajax de l'événement avec un javascript de déclenchement:
Référence javascript déclencheur de votre ajax événement qui est écouté par:
Maintenant, la validation est déclenchée dès que le bouton "soumettre" est cliqué, et le côté serveur de validation n'arrive qu'une fois qu'il est valide!
//vous pouvez utiliser jquery de validation de formulaire