Frage

Ich habe ein Formular (signup.php), die in einem nyroModal Fenster erscheint, wenn ich auf eine Schaltfläche klicken:

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

Ich mag eine Art von AJAX-Validierung verwenden (überprüfen, ob der Benutzername genommen wurde, zum Beispiel), bevor Sie das Formular abschicken.

hatte ich folgendes zu beachten: Wenn der Benutzer die Schaltfläche ‚Senden‘ klickt. es ruft Javascript-Funktion mit onClick, die die erforderlichen Felder an einen PHP-Skript gültig, die gibt zurück, ob die Felder senden. Dann, wenn das Feld ungültig ist, benachrichtigt er den Benutzer, aber wenn das Feld gültig ist, reicht sie das Formular über so etwas wie $('#formid').submit();. Leicht genug in der Theorie.

ABER

Das Problem ist, wenn die nyroModel die neue Form von einer URL wird, und erstellt ein div in dem DOM mit dem Inhalt darin, ignoriert Firefox vollständig all <script> Tags. Mit Firebug, kann ich sehen, es wird tatsächlich die <script>-Tags mit der Antwort, aber Firefox ignoriert sie. Außerdem kann ich eine jQuery-Funktion auf der Seite nicht schaffen, dass das Modell aus aufgerufen wird, weil, wenn das Dokument erstellt wird, wird das Formular nicht existiert in DOM noch.

Alle Ideen, wie diese zu lösen?

War es hilfreich?

Lösung

Versuchen Sie eine einreichen Handler Form hinzufügen:

onClick='return frmSubmit()'

In diesem Handler serialisiert werden Sie zunächst die Daten des Formulars und übermittelt diesen an das Validierungsskript. Achten Sie darauf, nach der Ausgabe der Anforderung an return false, wie es asynchron erfolgt. In der Antwort Rückruf implementieren Sie die folgende: Wenn die Antwort anzeigt, dass die Eingabe gültig ist, können Sie programmatisch das Formular mit dem .submit()-Verfahren einreichen. Wenn jedoch zeigt die exzellente Spielbarkeit, dass etwas falsch (Sie werden das Feedback im JSON-Format zu liefern haben), heften sich an die Form etwas konstruktives Feedback für den Benutzer zu lesen.

Vergessen Sie nicht das KeyPress-Ereignis zu fangen, und verhindert, dass das Formular ausgefüllt werden, wenn Enter gedrückt wird, wie es wird Bypass Ihrer Validierungsfunktion.

Und, ähm, ein Vorschlag: es könnte besser sein, alle die Validierung auf der Client-Seite zu tun, mit zu beginnen, die in der Regel genug. Sie haben wahrscheinlich gehört, dass die clientseitige Validierung umgangen werden kann, so gibt es immer noch einen Bedarf für die serverseitige Überprüfung. Allerdings fühle ich mich immer, wenn ein Benutzer mit dem System zu Chaos entscheidet ernst, dann ist es nicht notwendig ist, ein konstruktives Feedback zu liefern. Eine einfache Fehlermeldung an genügt. So überprüfen Sie zuerst die Eingabe mit einfachen Javascript. Wenn etwas nicht stimmt, Feedback. Wenn jedoch empfängt der Server ungültige Eingabe (was bedeutet, dass die clientseitige Validierung umgangen wurde), nur den Benutzer benachrichtigen, dass er nicht.

Andere Tipps

Sie so etwas wie verwenden:

onClick='javascript: return myValidationFuncion()

Wenn Sie Ihre Funktion überprüfen würde, ob der Wert gültig ist, das heißt macht es Ihren Web-Service-Aufruf. Wenn die Werte nicht gültig, einfach return false, um die Ausführung zu stoppen.

K

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