Chciałbym, aby przeglądarka działała tak, jakby użytkownik nacisnął klawisz Tab, gdy coś kliknie. W obsługi click Próbowałem następujących sposobów:Symulowanie naciśnięcia klawisza przy użyciu JavaScriptu
var event = document.createEvent('KeyboardEvent');
event.initKeyEvent("keypress", true, true, null, false, false, false, false, 9, 0);
this.input.focus()[0].dispatchEvent(event);
i jQuery:
this.input.focus().trigger({ type : 'keypress', which : 9 });
... co ja zajmowałem się od here.
Pierwsze podejście wydaje się najlepszym rozwiązaniem, ale nie działa. Jeśli zmienię dwa ostatnie parametry na 98, 98, to w polu wejściowym wpisuje się "b". Ale 9, 0 i 9, 9 (dawny które wziąłem bezpośrednio z witryny internetowej MDC) zarówno daj mi te błędy w Firebug pod FF3:
Permission denied to get property XULElement.popupOpen
[Break on this error] this.input.focus()[0].dispatchEvent(event);
Permission denied to get property XULElement.overrideValue
[Break on this error] this.input.focus()[0].dispatchEvent(event);
Permission denied to get property XULElement.selectedIndex
[Break on this error] this.input.focus()[0].dispatchEvent(event);
Permission denied to set property XULElement.selectedIndex
[Break on this error] this.input.focus()[0].dispatchEvent(event);
Słyszałem takie (bez jasnej definicji "takie") zdarzenia są "niezaufane", co może wyjaśniać te błędy.
Drugie podejście powoduje, że każda wartość, którą umieszczam jako zdarzenie, która ma być przekazana jako zdarzenie. Która, ale bez skutku (nawet jeśli używam 98 zamiast 9, nie ma "b" jest wpisane w polu.) Jeśli Próbuję ustawić parametr event.data w obiekcie, który przekazuję, który kończy się niezdefiniowanym po wywołaniu zdarzenia. Poniżej znajduje się kod, którego używam do wyświetlenia:
$('#hi').keypress(function(e) {
console.log(e);
});
Jakieś inne pomysły?
Czego chcesz się powołać? Czy próbujesz przenieść je do następnego wejścia? – hunter
Tak. Ale następne "wejście" niekoniecznie musi być elementem wejściowym lub innym elementem o naturalnej tabulacji. Nie jest również koniecznie nienaturalnie tabulatorowany (tj. $ ("[Tabindex]")). Fizycznie naciskająca zakładka (lub shift + zakładka) robi dokładnie to, czego chcę ... – Kev
Dzięki za to. Interesuje mnie tylko pierwszy przykładowy kod twojego pytania, który naprawdę pomógł :) –