2010-06-17 2 views
2

Я использую h: selectOneRadio.
Мне нужно установить фокус курсора в первое поле радио.Как настроить курсор фокус на загрузку?

<f:view> 
<html> 
    <head> 
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
    </head> 
    <body> 
     <h:form id="focusForm" > 
       <h:selectOneRadio id="testRadioId" value=""> 
        <f:selectItem id="si1" itemLabel="JSF" /> 
        <f:selectItem id="si2" itemLabel="JSP" /> 
       </h:selectOneRadio> 
     </h:form> 
</body></html></f:view> 

здесь Firefox (браузер) назначить идентификатор: focusForm: testRadioId: 0 это поле.
Так я использую следующий сценарий:

document.getElementById("focusForm:testRadioId:0").focus(); 

Но
Несколько раз, я могу изменить динамически отключить поле радио от поддержки боба.

<h:selectOneRadio id="testRadioId" value=""> 
       <f:selectItem id="si1" itemLabel="JSF" itemDisabled="true"/> 
       <f:selectItem id="si2" itemLabel="JSP" /> 
</h:selectOneRadio> 

Итак, здесь я отключу первый переключатель.
Теперь, если я использую тот же скрипт, то не устанавливайте курсор в первое поле радио.
как с этим справиться? это означает, как динамически изменять сценарий во время загрузки?

Пожалуйста, помогите мне.
Спасибо заранее.


Update:

Благодаря BaluC.

Выполняется следующий код.

<a4j:loadScript src="resource://jquery.js"/> 
<script type="text/javascript"> 
     function setFocusRadioField() 
     { 
       jQuery(':input:visible:enabled:first').focus(); 
      } 
</script> 

<body onload="setFocusRadioField();"> 
</body> 

Но следующий код не работает. Я проверить следующим образом:

jQuery('#focusForm\:testRadioId:enabled:first').focus(); 

Затем

jQuery('#focusForm\\:testRadioId:enabled:first').focus(); 

Затем

var id = "#focusForm:testRadioId:enabled:first".replace(/:/g, "\\:"); 
jQuery(id).focus(); 

Я не знаю, где я сделать ошибку. Лучше, мне нужно установить фокус курсора, используя id. Спасибо заранее.

ответ

1

Поскольку вы помечено JQuery, вот решение JQuery:

$('[id^=focusForm:testRadioId]:enabled:first').focus(); 

Селектор [id^=name] возвращает все элементы, начиная с именем name.

Если ваша цель на самом деле сосредоточиться на первый не скрыты и не отключил входной элемент страницы, независимо от типа входного сигнала, а затем использовать это:

$(':input:visible:enabled:first').focus(); 
+0

Спасибо за вашу полную поддержку. Теперь я проверяю его на первый код. [ID = имя]. Он отлично работал. – Eswar

+0

Но не работал в IE6, IE8. – Eswar

+0

$ ('[id^= focusForm: testRadioId]: enabled: first'). Focus(); Его работа в FIREFox. Не работает в IE6, IE8. У меня нет другого браузера. Тем не менее, я не проверяю какой-либо другой браузер. – Eswar

0

Я предпочел использовать JavaScript для этого , Поместите вызов функции js в тег тела HTML. Определите функцию javascript в js-файле или, по крайней мере, до вызова его из тега body. Поэтому, если вы собираетесь определить функцию в файле HTML, сделайте это раньше.

HTML:

<body onload=formFocus()> 

JavaScript:

<script type="text/javascript">   
    function formFocus() 
    { 
     focusForm.si1.focus(); 
    } 
</script> 
+0

С вопросом: * «Но, В некоторых случаях я могу изменить динамическое отключение радиополя от бэк-компонента» *. Этот ответ не охватывает этого. – BalusC

Смежные вопросы