2013-01-02 2 views
3

Я пытаюсь найти функцию поиска, которая должна вызывать метод в bean-компоненте посредством события click или события blur, которое когда-либо вызывается первым. Мне нужны оба события, потому что всякий раз, когда пользователь вводит что-то, он должен показывать результаты, и если пользователь скопировал и вложил в поле поиска, то он также должен работать. Поскольку во втором случае ключевое событие отсутствует, поэтому мне нужно размытие. Я попробовал, поставив разделителей между ними, как:Вызовите одного eventlistener одним из двух событий?

<f:ajax event="keyup blur" listener="#{mybean.search}" render="something"> 

также как

<f:ajax event="keyup,blur" listener="#{mybean.search}" render="something"> 

Оно не работает

Так что теперь я использую мой код, как

<p:inputText value="#{mybean.search}" > 
      <f:ajax listener="#{mybean.searchByIdListener}" event="keyup" render="datatable"/> 
      <f:ajax listener="#{mybean.searchByIdListener}" event="blur" render="datatable"/> 
</p:inputText> 

Но этот код вызывает прослушиватель событий два раза. Было бы хорошо, если бы прослушиватель событий был вызван только один раз любым из этих двух событий, которые происходят первыми.

ответ

0

Не уверен в связности, но в богатых интерфейсах вы можете использовать поддержку ajax и вызывать множественные события. Else вы можете использовать событие focus?

+0

Я в primefaces имеет тег как р: АЯКС, который похож на J: АЯКС. Я также использовал этот тег. Но такой же результат. И фокусное событие не будет работать для меня bcoz Я хочу вызвать eventlistener, когда пользователь вводит что-то в текстовое поле поиска. –

0

Почему бы не использовать что-то вроде этого:

<p:inputText onchange="" /> 

От руководства пользователя:

Client side callback to execute when input element loses 
focus and its value has been modified since gaining focus. 
+0

Thanx для ответа. На самом деле для метода поиска мне нужно показать результаты, когда пользователь вводит любой текст в событии. И если пользователь скопирует файл и вставляет его в текстовое поле через мышь, тогда событие keyup не будет запущено в это время, когда пользователь удалит фокус, тогда я хочу вызвать событие размытия. Поскольку у меня есть требование двух событий на одном методе ввода, который вызывает тот же метод, я не могу использовать onchange attr. :( –

+0

Если вы все еще хотите использовать оба события, добавьте переменную, которая покажет, будет ли выполнено первое событие. – Darka

+0

Я думаю, что это не очень хорошая идея, потому что предположим, что событие keyup было выполнено, тогда я также должен проверить кнопку удаления и возврата. пользователь ввел что-то, а затем удалит его, после чего он скопирует мышью и вставляет его. В этом случае теперь он не будет исполняться bcoz, он уже был выполнен с помощью keyup. Поэтому я думаю, что это неплохое решение. –

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