2016-02-02 9 views
6

Ich habe ein Formular mit einem einfachen Eingang und einem select2 Eingang wie folgt: http://codepen.io/anon/pen/QyBxwEselect2 mehrere verhindert, dass andere Eingabe von Formular auf eingeben

Drücken eingeben, während der erste Eingang fokussiert das Formular sollte (in diesem Fall, Umleitung auf eine 404-Seite).

Aus irgendeinem Grund verhindert die Eingabe multiple select2 das Senden des Formulars. Wenn ich die select2-Klasse oder das multiple-Attribut entferne, verhält sich das Formular normal.

Getestet auf Mac OS X Yosemite auf Safari, Chrome und Firefox und es passiert konsequent auf allen Browsern.

(Ich bin mit jQuery 2.1.3 und 4.0.1 select2)

+0

Sie müssten die Ereigniserfassung überprüfen; scheint wie seine Tastatur Handhabung ist ein bisschen zu ham-fisted. –

Antwort

4

Wie Formen der Arbeit ist, dass bei der Eingabe klicken, es einige Standard-Operationen hat, dass es zu vorzuformen versucht. Schritt eins ist das Formular abzuschicken. Dies funktioniert nur, wenn kein anderes JavaScript das Senden des Formulars verhindert. Select2 multiple löscht die Standardoperation, indem es den Standard verhindert. Wenn Sie mit dem Tippen beginnen und auf die Eingabetaste klicken, wird das nicht automatisch gesendet.

Die Lösung besteht darin, den zweiten Typ der Standardoption zu verwenden. Das ist ein Absenden Button auf der Seite. Das Formular mit gehe zum nächsten Absenden Button und klicke darauf. Diese Operation wird von select2 JavaScript nicht überschrieben.

http://codepen.io/anon/pen/yeqxQJ

nur <input type="submit"> zu Ihrem Formular hinzufügen, und es soll so, wie Sie es wollen arbeiten.

+0

Und wenn Sie wirklich den Knopf außerhalb des Formulars brauchen? – Daniella

+0

können Sie css verwenden, um die interne Schaltfläche mit keiner Sichtbarkeit zu verbergen. Keine anzeigen Ich glaube, dass die Funktionalität des Senden-Buttons los ist. Dann können Sie eine '' auf der Außenseite des Formularelements haben. Aber wenn Sie es helfen können, dann machen Sie das Formular auch die Schaltfläche umfassen. – Neoaptt