2012-08-28 14 views
7

Mam pole tekstowe, w którym wstawiam treść w miejscu karetki (dzięki Tim Down's answer). Wstawia zawartość, gdy użytkownik naciśnie przycisk. Ale wydaje się, że po naciśnięciu przycisku ostrość na obszarze tekstowym zostaje utracona. Jak mam się w nim skupić, pod warunkiem, że lokalizacja karetki jest taka sama? Myślałem o tym, jak używać evt.preventDefault() z .focusout(). Jeśli to pomaga.Jak sprawić, by element nie tracił ostrości po naciśnięciu przycisku?

Odpowiedz

8

Nie można zatrzymać fokusu z przesunięciem do elementu, który można ustawić, ale nadal pozwala on na normalne zachowanie myszy (na przykład przycisk click). Kliknięcie elementu obsługującego fokus, takiego jak przycisk, spowoduje ustawienie ostrości klawiatury.

Możliwe jest programowe przywrócenie fokusu do elementu, jeśli zostanie wykonane prawidłowo. Jeśli zrobi się to źle, może zepsuć użyteczność strony.

Demo: http://jsfiddle.net/jfriend00/Ddffh/

+0

Czy możesz mi powiedzieć w jaki sposób? Przepraszam, nie wiem. – think123

+0

@ think123 - Dodałem działającą demonstrację do końca mojej odpowiedzi. – jfriend00

+0

Dobra odpowiedź. Mimo to, okazało się, że 'unselectable =" na "' wydaje się działać, przynajmniej dla przycisków. – think123

-1

Można łatwo to zrobić stosując ostrość z powrotem do obszaru tekstowego programowo jako funkcja kliknięcie przycisku jest skończona. W ten sposób za każdym razem możesz odzyskać fokus wraz ze zdarzeniem kliknięcia.

1

Upewnij się, że obsługujesz mousedown zdarzenia. Spowoduje to wystrzelenie zanim ostrość innego elementu zostanie utracona.

W module obsługi zdarzeń mousedown należy zwrócić wartość false, aby zapobiec propagacji zdarzeń i zachowaniu domyślnemu. (Działa również na imprezy dotykowych)

return false; // on your mousedown event

http://jsfiddle.net/Ddffh/143/