2013-04-10 9 views
7

Wiem, że normalnie przeglądarka będzie obsługiwać autokorektę/wielką literę/etc na własną rękę, gdy użytkownik naciśnie enter. Ale używam atrybutu contenteditable i wykonuję jakąś specjalną operację na "enter", która wymaga mnie do użycia evt.preventDefault(), gdy użytkownik naciśnie enter. Ponieważ używam preventDefault() w moim słuchaczu, mobilne safari pozostawia otwartą bańkę autokorekty, która staje się bardzo funky wyglądająca/bezużyteczna. Czy jest jakiś alternatywny sposób (może za pomocą JS do wywołania zdarzenia), aby odrzucić bąbelek lub uruchomić normalne zachowanie bez konieczności wymuszania preventDefault?Czy istnieje alternatywny sposób wyzwalania autokorekty/autouzupełniania w mobilnym Safari (na iOS) po naciśnięciu przycisku?

Nie chcę pozbyć się funkcji autokorekty, ponieważ jest to ważne dla mojej aplikacji.

+0

Bardziej ogólnie, kiedy iOS wyświetla proponowaną autokorektę dla wartości wejściowej na ekranie, czy istnieje sposób na uzyskanie wartości po autokorekcji do użycia w javascript? – rakslice

+0

Możesz używać 'onfocus'' onblur' etc w twoim contenteditable div. –

Odpowiedz

0

Powinien być przykładowy kod! Ale myślę, że mówisz o czymś tak:

$("#myForm").submit(function(event) { 
    event.preventDefault(); 
    // Do other stuff 
}); 

Więc jestem całkiem pewien, że można odpalić .blur -event ręcznie która mogłaby wystrzelić że autouzupełniania funkcji:

$("#myForm #myInput").blur(); 

Jeśli ta odpowiedź jest źle, proszę podać przykładowy kod - nie każdy na Stackoverflow jest magikiem.

+0

Nie wiem, jak wyglądał oryginalny kod plakatu, ale jeśli mam 'handler' z instrukcją 'event.preventDefault', dodanie' 'blur' przed' event.preventDefault' nie mi poprawiony tekst: http://jsfiddle.net/LGWrJ/ – rakslice

0

powiem jej łatwo z zestawem Focus, W przeciwieństwie do poprzednich odpowiedzi, która współpracuje z przedstawienia zachowanie auto będzie nadal AUTOKOREKTA ..

$("#MyInput").focus(function(event){ 
    event.preventDefault(); 
}); 
$("#MyInput").blur(){ // do events you want on focus lost.. from input.. :) 
}); 

myślę, że to zrobi ..

Powiązane problemy