Скрыть inputText при потере фокуса с помощью p:inplace

моя форма выглядит так:

        <p:inplace>  
            <h:inputText id="description" value="#{cc.attrs.description}" /> 
        </p:inplace> 

Когда пользователь нажимает на текст p:inplace, будет отображаться inputText для редактирования значения.

Как я могу скрыть inputText или p:inplace, когда пользователь щелкает где-то еще или сам элемент управления теряет фокус.

Спасибо.


person Briefkasten    schedule 05.10.2013    source источник


Ответы (1)


Используйте событие blur вместо inputText, передав ему значение id:

<p:inplace widgetVar="basic_#{cc.id}">
    <p:inputText value="#{cc.attrs.description}" id="description">
        <p:ajax event="blur" oncomplete="basic_#{cc.id}.hide();" />
    </p:inputText>
</p:inplace>
person Xtreme Biker    schedule 05.10.2013
comment
Этот ответ был бы лучше, если бы он учитывал тот факт, что он является частью составного компонента и, следовательно, может быть включен несколько раз в одно и то же представление и, таким образом, может вызвать коллизии в имени widgetVar. Решение: включить что-то уникальное, например #{cc.id} или около того, в имя переменной виджета, например widgetVar="basic_#{cc.id}", и указать на него ссылку, например oncomplete="basic_#{cc.id}.hide()". - person BalusC; 06.10.2013
comment
@BalusC правда! Я даже не видел, что это композит... Обновлено ;-) - person Xtreme Biker; 07.10.2013