2015-07-15 2 views
0

У меня довольно сложная форма, построенная с помощью PrimeFaces 4.0, и я хочу добавить JQuery/Javascript-код на стороне клиента, который должен быть запущен, если изменяется значение любого из полей ввода формы.Добавить javascript change trigger для Primefaces selectonemenu

Для <p:inputText> и <p:selectBooleanCheckbox> можно зарегистрировать обработчик событий с $(this).change(handler);

Как я могу зарегистрировать этот обработчик для <p:selectonemenu>? Регистрация обработчика самого элемента или встроенного объекта _input -Field не вызывает обработчик при изменении значения.

Примечание. Я не хочу устанавливать обработчик непосредственно на Primefaces-Tag, но динамически через jQuery.

Любая помощь с благодарностью, спасибо!

ответ

0

Обнаружено решение: . Поверхности создают отдельную панель для отображения параметров, которые отображаются, если пользователь нажимает на <p:selectonemenu>. Идентификатор этой панели - это идентификатор selectonemenu + "_panel". Как это панель, а не вход любого рода click() должен быть использован вместо change() Пример:

$(PrimeFaces.escapeClientId($(this).attr('id')+"_panel")).click(handler); 

Очевидно, что в обработчике вы должны переключиться обратно в меню с чем-то вроде этого:

if($(this).attr('id').endsWith('_panel')){ 
       widget = $(PrimeFaces.escapeClientId($(this).attr('id').substring(0,$(this).attr('id').length - '_panel'.length))); 
Смежные вопросы