Wie zu erfassen enter-Taste gedrückt werden, die auf Seiten mit mehreren Formularen?
Habe ich geerbt, eine web-Anwendung, wo die üblichen Fähigkeit zum drücken von return in einem der Eingabefelder deaktiviert wurde für die sehr guten Grund, dass die Seite enthält mehrere Formulare, und die Anwendung nicht in der Lage wäre zu bestimmen (oder, so wurde mir gesagt), die form zu handeln. Die Anwendung wurde entwickelt, so gibt es keine submit-buttons (wie bei input type="submit"), und stattdessen haben sich die Designer gegangen für onclick-handling. Hier sind zwei Tasten, die definiert werden, auf einer der Seiten enthalten zur Veranschaulichung
<input type="button" value="LOGIN" name="btnLoginOk" onclick="submit(); />"
<input type="button" class="button-click-grey" value="Find Link Partners"
onclick="raiseEvent('SubmitForm','',this);" style="cursor:pointer;" />
Aber ich wirklich wollen, um in der Lage sein, um Benutzern zu erlauben, drücken Sie return, wenn Sie wünschen, z.B. wenn Sie gerade getippt haben, um in einem Feld im Zusammenhang mit der ANMELDUNG, dann erkennen Sie, dass und Aktion onclick="submit();"
Gibt es vielleicht eine Lösung mit jQuery.
InformationsquelleAutor der Frage | 2009-04-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie die EINGABETASTE drücken, auf eine input-Steuerung des Browsers sucht den ersten submit-button in dieser form und simuliert einen Klick auf es. Im Fall von mehreren Tasten, die ersten werden gedrückt auf der Tastatur eingeben (dies ist keineswegs in Stein gemeißelt und Browser können davon abweichen).
Wenn Sie zwei Formen, die eine, die bekam ein Tastendruck wird es ersten submit-button gedrückt. Daher sind Sie nicht wirklich benötigen keine spezielle Handhabung. Sie müssen nur aufhören, in den Weg stellen.
Können Sie simulieren diese im code in einem Formular:
Oder Fenster (für eine demonstration, was grob passiert):
Vorausgesetzt natürlich, dass
.preventDefault()
wurde nicht genannt, auf der Veranstaltung.Bottom line: Wenn Sie die event-können Sie die göttliche von ihm, was element es kam, und deshalb die form, zu der es gehört. Auch in diesem Fall:
Hier
submit()
ist eine Globale Funktion, aber wenn es genannt wird, seinen Kontext (this
) wird das element, und Sie können tunsubmit(e){ this.form.submit(); }
.Das klingt für mich wie die designer nicht ganz begreifen DOM /Formular-events und wird den langen Weg um das problem. Eine weitere mögliche Ursache könnte sein, dass das Programm ist alt und wurde bereits entworfen, als diese Dinge waren nicht ganz so stabil oder ordnungsgemäß dokumentiert, wie Sie heute sind.
Ersetzen:
Mit dabei:
Dann fügen Sie einen Schlüssel-handler, der alle Formen, die es braucht, erkennt und unterdrückt Sie die EINGABETASTE, wenn eine bestimmte Bedingung erfüllt wird (für die Formulare, die Sie eigentlich tun möchten, deaktivieren Sie diese auf).
Oder noch besser: Verwenden Sie ein Formular-Validierung Bibliothek (oder jQuery-plugin), der weiß, wie zu tun dies für Sie.
InformationsquelleAutor der Antwort Borgar
Können Sie die bind-Taste drücken-Ereignis für die Enter-Taste in jquery :
InformationsquelleAutor der Antwort sanmai
Daumen drücken, dies werde
InformationsquelleAutor der Antwort wheresrhys
Ich glaube nicht, dass Sie brauchen, jQuery oder javascript für diese. Sie können in der Tat erkennen, die ein Benutzer hat senden, oder auch, mit welchem submit-button getroffen wird (in Fall gibt es mehr als einen submit-button pro Formular).
Hier ist der code, den Sie verwenden:
Dann für das Formular-Skript verarbeitet, Sie würde einfach überprüfen Sie den Namen der Schaltfläche "senden", zum Beispiel:
Alternativ können Sie die Bilder als submit-buttons, dann können Sie verwenden Sie den gleichen Namen für alle submit-buttons und überprüfen Sie einfach Ihre Werte-Sie können dies auch mit normalen submit-buttons, wenn jeder button hat eine eindeutige
value
Attribut.Edit:
Eine weitere Methode ist die Kombination von POST und GET Werte, D. H.:
InformationsquelleAutor der Antwort Calvin