Question

Nous écrivons une application ASP.NET MVC. Par défaut, si le navigateur client a Javascript, le gestionnaire pour chaque formulaire sur la page est définie, par Javascript, d'être celui qui envoie la soumission d'un bas Ajax « pipe » (amélioration progressive).

Mais, pour une forme (sur une page de plusieurs), je voudrais ce gestionnaire pour être contournée / ignoré. Est-il un moyen simple de le faire? Peut-être en remplaçant le gestionnaire en spécifiant mon propre événement onsubmit directement dans les DOM - ou une autre méthode

Nous utilisons jQuery, de sorte que ces bibliothèques sont disponibles pour moi.

Était-ce utile?

La solution

Je résoudre le plus probable en assignant un attribut distinctif à la forme qui rompt avec vos normes (celui qui ne devrait pas avoir un comportement AJAX) - quelque chose comme class="oldschool". Dans le code JavaScript, lors du branchement de la soumettre gestionnaire d'événements sur les formulaires, je puis vous assurer d'exclure toute forme avec cette marque particulière:

$('form:not(.oldschool)').submit(function() {
    // Do fancy AJAX stuff
});

Mise à jour: Pour pas pour modifier les fichiers JavaScript externes, et que le nouveau comportement introduit simplement en modifiant le balisage HTML, envisager de faire quelque chose comme ceci:

<form ... onsubmit="if (typeof $ == 'function') $(this).unbind('submit');">

Il n'y a pas de beauté, mais il semble que le travail soit fait -. Au moins dans les navigateurs dont je dispose ici

Autres conseils

Bien que je ne suis pas sûr que je comprends ce que vous entendez par « du DOM » Je suppose que vous ne pouvez pas changer le ajax / code js d'origine, mais vous devriez être en mesure d'insérer une petite étiquette de script quelque part qui court après le code qui fixe les ajax soumettre gestionnaire.

De plus en supposant que le jeu de gestionnaire est sous la forme $("form").submit(...) ou similaire, vous pouvez utiliser cette

$('selectorForYourForm').unbind('submit');

Comme il court après le code d'origine il délie tout gestionnaire le code d'origine défini pour l'action de soumettre ce formulaire.

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