2014-06-19 12 views
6

Buduję aplikację internetową za pomocą kierowania cordova na system iOS. Mam ten formularzZdarzenie przycisku wysyłania formularza nie jest rejestrowane po uruchomieniu klawiatury iOS 7

<form id="formID"> 

    <div class="row"> 
    <input type="text" name="something1" placeholder="something1" class="form-control" required maxlength="26" /> 
    </div> 

    <div class="row"> 
    <input type="text" name="something2" placeholder="something2" class="form-control" pattern=".{6,6}" required /> 
    </div> 

    <div class="row"> 
    <input type="submit" value="Submit" class="button btn-primary" /> 
    </div> 

</form> 

W moim javascript mam słuchacza dla zdarzenia submit.

Mój problem polega na tym, że gdy klawiatura jest wyświetlana w systemie iOS, kliknięcie przycisków przesyłania nie zawsze powoduje wywołanie zdarzenia. Czasami działa pierwsze 2 razy, ale przestaje działać. Ktoś, kto wcześniej do tego dołączył?

Teraz może być konieczne kliknięcie "Gotowe" na klawiaturze (zniknięcie), a następnie użycie przycisku przesyłania. Lub kliknij przycisk przesyłania z klawiaturą wskazującą, które spowoduje ukrycie się keybopa, a następnie ponownie kliknij przycisk przesyłania.

Wszelkie pomysły?

EDIT

Działa prawidłowo na iOS 6, ale na iOS 7 przycisk Prześlij nie wywoła zdarzenie po pierwszych 2 kliknięć.

+0

Widziałem podobne problemy, ale zazwyczaj podczas próby zwolnienia klawiatury przez kliknięcie formantu, który normalnie nie reaguje na kliknięcia lub kliknięcia. Kolejnym dobrym testem jest sprawdzenie, czy Twoja strona reaguje w ten sam sposób za pomocą Mobile Safari; to pomoże ci ustalić, czy jest to specyficzne dla Cordova, czy bardziej ogólne dla UIWebkit. – Palpatim

Odpowiedz

5

Rozwiązałem więc problem, który miałem. Jak stwierdzono w pytaniu, to działało dobrze dla ios6 i androida. Ale w przypadku ios7 zauważyłem, że kiedy zwiększyłem wysokość pól tekstowych nad przyciskiem submit, dostałem błąd opisany powyżej. Kiedy nie dodałem żadnej innej domyślnej stylizacji, która wpłynęła na wysokość elementów powyżej, działał przycisk przesyłania. Dziwne, prawda.

Ale potem czytam to question.

Zamiast przycisku przesyłania i posiadania skryptu czekającego na uruchomienie zdarzenia, zmieniłem przycisk na link i słuchałem zdarzenia touchend. Bam, działało jak czar.

$(document).on('touchend', 'form #button', function (e) { 
    $('#formID').submit(); 
}); 

Pozwoliłem temu wydarzeniu pominąć i wywołać zdarzenie submit, dzięki czemu kliknięcie przycisku "Go" na klawiaturze nadal wyzwala funkcję przesyłania.

+0

dzięki! pomógł mi naprawić błąd z klawiaturą, nad którą pracowałem przez ostatnie 2 dni !! – sputn1k

Powiązane problemy