2012-05-29 3 views
0

Я разработал составной компонент следующим образом ...Событие OnBlur не запускается при нажатии команды CommandButton?

<composite:implementation> 
     <div class="numericBox"> 
      <h:inputText id="txtInput" 
         size="#{cc.attrs.maxLength}" 
         converterMessage="#{cc.attrs.converterMessage}" 
         validatorMessage="#{cc.attrs.validatorMessage}" 
         required="#{cc.attrs.required}" 
         requiredMessage="#{cc.attrs.requiredMessage}" 
         minlength="#{cc.attrs.minLength}" 
         maxlength="#{cc.attrs.maxLength}" 
         value="#{cc.attrs.value}"> 
       <f:ajax event="blur" render="@this err"/> 
       <f:ajax event="blur" render="#{cc.attrs.renderParent}" disabled="#{empty cc.attrs.renderParent}"/> 
      </h:inputText> 
     </div> 
     <h:panelGroup id="err"> 
      <utils:fieldError_right id="errText" group="#{cc.clientId}-txtInput"/> 
     </h:panelGroup> 
    </div> 
</composite:implementation> 

И у меня есть кнопка команды, как показано ниже ..

<h:commandButton id="btnNext" styleClass="btnNext" action="#{someBean.next}"/> 

Теперь я использую компонент следующим образом ... (только с указанием голого представления кости)

<util:numericInput label="Label" value="#{somebean.number}" 
          maxLength="2" optional="true" renderParent="-vehVal" 

/> 

    <h:panelGroup id="vehVal"> 
    <util:amountInput label="label2" value="#{someBean.nubmer2}"      
        rendered="#{someBean.number > 0}" 
        required="#{someBean.number > 0}" /> 
    </h:panelGroup> 

Поэтому в основном я хочу, чтобы сделать компонент «amountInput», когда-либо пользователь ввел некоторое значение> 0 в «Спальных icInput ". Он отлично работает, когда я ввожу какое-то значение в первом поле и нажимаю на то, где в браузере. Но если я ввешу какое-то значение в поле и сразу же нажимаю на следующую кнопку, он переводит меня на следующую страницу без проверки (рендеринга) следующего поля. Все, что я могу понять, это событие onBlur не запускается, когда я нажимаю на следующую кнопку. Зачем ?? Есть ли решение?

+0

Извините, ребята, я знаю, что мой уровень accesis низкий, но я не уверен, как его увеличить. – user1220373

+0

Прочтите [этот пост] (http://meta.stackexchange.com/a/5235/161675) для получения дополнительной информации. –

ответ

0

Возможно, событие завершено, но форма также отправляется, поэтому следующий вид будет отображаться, и вы пропустите результат события ajax.

Возможно, вам придется использовать более непосредственное событие, чем blur, например keyup. Кроме того, вы можете условно отключить кнопку, если someBean.number> 0 и someBean.number2 пуст.

+0

Именно это и происходит. Невозможно использовать ключ, так как я хочу, чтобы проверка срабатывала после того, как фокус удалился из поля, также не может отключить кнопку, в этом случае проверка страницы не произойдет. На самом деле я нашел способ остаться на странице, используя какое-то условие в следующем методе компонента, но теперь я хочу, чтобы проверка уровня страницы срабатывала тоже для этого поля, которое не происходит, как в первой фазе рендеринга, только второе поле становится но проверка не производится. – user1220373

+0

Хорошо использовал событие keyup для compoment следующим образом: работал как шарм: D – user1220373

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