2009-10-09 14 views
7

Muszę skierować fokus wejściowy do określonego komponentu inputtext po załadowaniu strony (aby umożliwić wprowadzenie wartości za pomocą skanera kodów kreskowych).Ustawianie fokusu tekstu wejściowego JSF

W prostym HTMLu dodałem obsługę JavaScript "onload" do znacznika body, ale w JSF musi być lepszy sposób.

Co to jest „najczystszym” sposobem osiągnięcia tego celu dla:

  1. „statycznych” przypadkach taka sama kontrola otrzymuje skupić każdą strona załadowała.
  2. "Dynamiczne" przypadki, w których może to być inna kontrola dla każdego ładowania strony.

Odpowiedz

7

Interesujące pytanie.

Nie ma nic poza wyjęciu z pudełka w JSF, aby to zrobić. Wiesz już, jak to zrobić w zwykłym HTML/Javascript i nie ma nic innego, co JSF dodaje do tego innego niż te zwariowane identyfikatory.

Aby uzyskać dostęp "statyczny", wystarczy podać pełny identyfikator JSF, np. "myform: mydiv: myinput". Nie jest to jednak zbyt czyste, jak gdyby strona uległa zmianie, prawdopodobnie ten identyfikator również się zmieni.

Idealnie byłoby mieć komponent JSF, który zagnieździłby się wewnątrz twojego <h:inputText>, który wskazywałby, że fokus był wymagany. Na przykład:

<h:inputText value="#{whatever}"> 
    <my:focusComponent /> 
</h:inputText> 

Technicznie nie byłoby to trudne rozwiązanie. Komponent po prostu znajdzie jego identyfikator, a następnie doda trochę javascriptu, który wywoła na nim focus().

Szew ma coś podobnego do komponentu <s:defaultAction/>, który powoduje, że łącze lub przycisk odpowiada na klawisz Enter. Możesz chcieć sprawdzić kod źródłowy tego.

+0

Podoba mi się Twoje dynamiczne rozwiązanie. Ma pewne ograniczenia, jeśli kontrola skupienia porusza się w każdym miejscu, ale wystarcza w mojej sytuacji. Dzięki! – Timo

+0

Identyfikatory JSF nie są szalone, jeśli przypisujesz własne. :-) Po prostu nie pozwól, żeby to się stało! Na marginesie, Apple iDevices wydają się ignorować próby ustawienia ostrości dla danych wejściowych podczas ładowania okna z javascript. Ma to sens w kontekście ogólnego przeglądania stron internetowych, ale bardzo irytuje, gdy próbuje się tworzyć niestandardowe aplikacje internetowe (szczególnie te, które używają skanerów kodów kreskowych do wprowadzania danych). –

Powiązane problemy