Frage

Wir sind eine ASP.NET MVC-Anwendung zu schreiben. In der Standardeinstellung, wenn der Client-Browser Javascript, den Handler für jede Form auf der Seite gesetzt ist, durch Javascript, einer sein, der die Vorlage nach unten ein Ajax „pipe“ (Progressive Enhancement) sendet.

Aber für eine Form (auf einer Seite von mehreren), würde ich diese Prozedur wie umgangen / ignoriert werden. Gibt es eine einfache Möglichkeit, dies zu tun? Vielleicht durch die Handler überschreiben von meinem eigenen onsubmit Ereignis direkt in dem DOM spezifiziert - oder eine andere Methode

Wir verwenden jQuery, so dass diese Bibliotheken mir zur Verfügung stehen.

War es hilfreich?

Lösung

Ich würde höchstwahrscheinlich dieses Problem lösen, indem Sie einige markante Attribut der Form, dass Pausen mit Ihren Standards zuweisen (die, die nicht AJAX Verhalten haben sollte) - so etwas wie class="oldschool". Im JavaScript-Code, wenn der einreichen auf Formulare Ereignishandler Einhaken, würde ich dann stellen Sie sicher, jegliche Form mit dieser speziellen Markierung ausschließen:

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

Update: Um nicht alle externen JavaScript-Dateien zu ändern, und hat das neue Verhalten eingeführt, indem einfach den HTML-Markup zu ändern, sollten Sie so etwas wie dies zu tun:

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

Es ist keine Schönheit, aber es scheint, die Arbeit zu erledigen -. Zumindest in den Browsern habe ich hier

Andere Tipps

Obwohl ich nicht sicher bin, verstehe ich, was Sie unter „aus dem DOM“ Ich nehme an, Sie können nicht die ursprüngliche ändern Ajax / js Code, aber Sie sollten ein wenig script Tag irgendwo einfügen können, die nach dem Code ausgeführt wird dass Sets legt die ajax-Handler.

Unter der weiteren Annahme, dass der Handler-Set in Form $("form").submit(...) ist oder ähnlich könnte man dieses

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

Wie diese Läufe nach dem ursprünglichen Code js in jedem Handler den ursprünglichen Codesatz entbinden würde für die Wirkung dieses Formular aus.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top