Y a-t-il un moyen d'utiliser les appels de JQuery .bind () et .Trigger () pour exécuter une fonction définie par l'utilisateur (ex: sauvegarde ()) et agissez à la suite de la méthode? Par exemple: puis: p>
4 Réponses :
Pourquoi n'agissez-vous pas sur la valeur de retour dans le rappel lui-même? Il enlève le chèque supplémentaire (qui ne fonctionnera pas comme si vous vous attendez à).
$("#aForm").bind ('save', function () {
if(some stuff happens that is true) {
doSomething();
}
else {
doSomethingElse();
}
});
J'essaie d'éviter de faire cela pour la simple raison que j'ai plusieurs formulaires dans une boîte de dialogue (chacun dans un onglet séparé). J'aimerais que la boîte de dialogue elle-même utilise en réalité appeler la méthode "Save" de chaque formulaire individuellement en fonction d'un drapeau "sale". C'est pourquoi j'essaie de résumer le "Dosomething ()" et "DosomsOrtOnse ()" "" "fonctionne des formulaires - c'est-à-dire la boîte de dialogue principale gère le flux global. Je veux juste que chacun des formulaires traite de sauver leurs données - ou de retourner false si une erreur se produit lors de la sauvegarde de leurs données. Est-il possible d'ajouter une fonction "Enregistrer" personnalisée à chaque formulaire à l'aide de .extend ()?
Pourquoi n'avez-vous pas une méthode de validation qui gère la validation. Vous devez vous attacher à l'événement Soumettre code> de votre formulaire, puis exécutez la validation. Si la validation réussit, soumettez le formulaire.
Le long de la même veine, cela ne serait-il pas possible pour moi d'ajouter une nouvelle fonction appelée «sauvegarder» ou «sauvegarda» comme le plugin de validation doit ajouter une nouvelle capacité au formulaire, puis utiliser cette méthode pour enregistrer les données. ? Je n'ai pas fait de plugin, mais cela semble être le moyen le plus élégant d'atteindre ce que j'essayais de faire, non?
Bien sûr, vous pouvez le faire si vous devez effectuer une demande AJAX de quelque sorte (ou devez modifier les données). Mais en général, si vous avez lié à l'événement code> code>, il vous suffit de renvoyer le résultat de la validation. L'événement Soumettre est spécial dans le sens où il inspecte la valeur de retour du gestionnaire pour voir si elle doit soumettre le formulaire.
Je sais que cette question est ancienne, mais peut-être que cela peut aider quelqu'un.
Comme Paliat pointe, vous ne pouvez pas retourner une valeur car l'événement déclencheur est asynchrone. Ce que vous pouvez faire, c'est transmettre un objet comme paramètre à l'événement. Par défaut, les objets JavaScript sont toujours des références à l'original. P>
par exemple par exemple.: P>
Bind: P>
var ret = {ret:true};
$(...).trigger('example',[ret]);
if (!ret.ret)
//event return false
else
//event returned true
Potentiellement, oui. Si utilisé correctement :)
Nope ça ne va pas. Vous passez la référence de l'objet (true) à la gâchette de l'événement et de le déclencher. Le gestionnaire d'événements modifie la valeur ASYNC avec AJAX à FALSE. Disons que Ajax se termine dans 10 secondes. Donc, en 10 secondes, la valeur sera devenue fausse. Mais vous le vérifiez immédiatement après la gâchette et vous obtenez une mauvaise valeur de vrai. J'espère que j'étais clair.
Vous pouvez utiliser déclencheur code> au bon moment, juste après la finition AJAX.
Pourquoi faire ça et comment le temps? Il suffit d'utiliser triggerhandler code> qui attendra l'appel ASYNC à compléter.
Je le déclenche habituellement à l'intérieur du rappel "Success" de l'appel Ajax. De cette façon, assurez-vous que tout fonctionne quand il est censé.
Ok, je ne suis pas suivi de quoi visez-vous de résoudre. Désolé, cela peut ne pas fonctionner pour vous.
Consultez Triggerhandler () , qui agit de nombreuses autres manières comme de la DOCS: P>
La méthode .TriggerHandler () se comporte de la même manière à .trigger (), avec le
Exceptions suivantes: P>
déclencheur () code> mais vous permettra de retourner une valeur. P>
Vous pouvez également utiliser jQuery intégré événement.preventDefault () et événement.isdefaultprevent () : et ensuite: p> < Pré> xxx pré> p>