2016-02-02 28 views
6

Mam formularz z prostego wejścia i wejścia select2 tak: http://codepen.io/anon/pen/QyBxwEselect2 stwardnienie zapobiega inne wejście od złożenia formularza na wpisanie

Naciśnięcie przycisku ENTER, gdy pierwsze wejście koncentruje powinien złożyć formularz (w tym przypadku, przekierować na stronę 404).

Z jakiegoś powodu, wielokrotne zaznaczenie2 uniemożliwia przesłanie formularza. Jeśli usuniemy klasę select2 lub multiple, formularz będzie zachowywał się normalnie.

Testowany na Mac OS X Yosemite na Safari, Chrome i Firefox i dzieje się konsekwentnie we wszystkich przeglądarkach.

(używam jQuery 2.1.3 i 4.0.1 select2)

+0

Będziesz musiał sprawdzić przechwytywanie zdarzeń; Wygląda na to, że obsługa klawiatury jest trochę zahamowana. –

Odpowiedz

4

Jak formy pracy jest to, że po kliknięciu wejść, to ma pewne operacje domyślne, że stara się wstępnej. Pierwszym krokiem jest przesłanie formularza. Działa to tylko wtedy, gdy nie ma innych skryptów JavaScript, które uniemożliwiałyby przesłanie formularza. Select2 multiple pozbywa się domyślnej operacji, zapobiegając domyślnej. W ten sposób, gdy zaczniesz pisać i klikniesz Enter, nie zostanie ono automatycznie przesłane.

Rozwiązaniem jest użycie drugiego typu domyślnej opcji. To znaczy mieć przycisk przesyłania na stronie. Formularz przejdź do najbliższego przycisku przesyłania i kliknij go. Ta operacja nie jest nadpisywana przez select2 JavaScript.

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

wystarczy dodać <input type="submit"> do swojej postaci, a to powinno działać tak, jak chcemy.

+0

A jeśli naprawdę potrzebujesz przycisku poza formularzem? – Daniella

+0

możesz użyć css, aby ukryć wewnętrzny przycisk z brakiem widoczności. Wyświetl brak Wierzę, że pozbywa się funkcji przycisku przesyłania. Wtedy możesz mieć '' button onclick = "myForm.submit()"> 'na zewnątrz elementu formularza. Ale jeśli możesz w tym pomóc, postaraj się, aby formularz obejmował również przycisk. – Neoaptt