Senden Sie das Formular und schließen Sie das Fenster
Kann ich nicht verstehen, warum dieses nicht funktioniert.
Ich habe ein Formular öffnet sich im neuen tab, die ich will, zu schließen, wenn die Einreichung:
<form name="form" id="form" method="post" enctype="multipart/form-data" >
//form inputs
<button accesskey="C" class="boton" onclick="form.submit(); alert('waiting...'); window.close()"> <u>A</u>djuntar</button>
</form>
wenn ich entfernen Fenster.close() das Formular abgeschickt wird, aber wenn es in meinem code, es zeigt den alert aber nicht die Vorlage.
Ist dort irgendetwas falsch?
- Sind Sie das Fenster zu öffnen mit JS? Ich glaube nicht, dass Sie können schließen Sie einfach alle alten Fenster, es muss eine sein, die du erstellt (Als Sicherheitsmaßnahme) Auch bin ich mir nicht sicher, ob man enge Registerkarten mit JS überhaupt nicht mehr, obwohl
.close()
hat funktioniert - Schaltfläche schließen nur das Fenster, die geöffnet wurden, von ihm. Finden Sie
https://developer.mozilla.org/de/docs/Web/API/Window/close
- versuchen Sie es mit onclick="form.submit(); alert('warten...'); window.close();"
- Das ist der code, der erscheint schon in der Frage
- Aufruf
form.submit()
wenn ein submit-button geklickt wird, redundant ist (submit-buttons trigger-Formular sowieso). - Ich legte Semikolon. Manchmal wird es auch schaffen Problem.
- Hinzufügen eines Semikolon nach der letzten Anweisung in einem Skript wird nie einen Unterschied machen in JavaScript.
Du musst angemeldet sein, um einen Kommentar abzugeben.
du musst nicht öffnen Sie das Formular in einem neuen Fenster (oder tab).
Sie können entweder übermitteln Sie die Daten an ajax, oder verwenden Sie eine innere verborgene iframe als target-Eigenschaft des form-Elements. auf diese Weise wird das Formular öffnet sich in einem verborgenen inneren element. z.B.:
Form nicht erst übermittelt werden, wenn der event-handler-Funktion ausgeführt wurde.
alert
blockiert die Ausführung von allem, bis der dialog geschlossen wird.close
schließt das Fenster, so dass es nirgends zum laden der Formular-Vorlage in, der bricht die Anfrage.Wenn Sie gehen, um ein Fenster zu schließen, nicht erwarten, dass es in der Lage sein, um das senden einer HTTP-Anfrage bei der gleichen Zeit.
Haben Sie wahrscheinlich bereits eine Lösung gefunden, aber ich bin dieses posting, jedenfalls für jeden, der kommt über das gleiche in der Zukunft.
Ich bin mit Java-servlets, aber ich denke, dass ist das gleiche mit jeder form submission => die Fähigkeit zu wählen, welche Seite angezeigt werden soll, nachdem die Formulardaten verarbeitet wurde.
Einmal habe ich den Antrag eingereicht, die doPost Methode im servlet-erlaubt mir zu sagen, welche URL ich möchte im browser angezeigt werden, nachdem die Daten verarbeitet wurden.
Ja, können Sie wahrscheinlich etwas entlang diesen Linien:
Dann auch eine Datei erstellen namens ClosePopup.html mit nichts aber eine close () - Anweisung
Diese Weise nicht die Taste, die Sie klicken auslösen der Schließung der popup, aber Sie laden ein selbst zerstören Seite, nachdem die form übermittelt wird. Das Endergebnis ist identisch.
HTML:
JS:
Ihr schaffen wir ein Ereignis, und schließen Sie das Fenster, nachdem Sie es vorlegen
Nehmen JS in script-tag, wenn Sie es testen 🙂
event.preventDefault()
aber Sie können es auch tun, indem Sie es unmöglich, zu beheben, der HTTP-Anfrage, dass das Absenden eines Formulars auslösen würde. das Fenster Schließen würde das tun.Können Sie nicht schließen Sie einfach alle Fenster von
window.close()
Methode. Die form ist nie vorgelegt, weilwindow.close()
ausfällt.https://developer.mozilla.org/en-US/docs/Web/API/Window/close