Невозможно вызвать событие h: selectonemenu onselect - PullRequest
1 голос
/ 09 июня 2011
<h:selectOneMenu id="queueSelectMenu" styleClass="selectOneMenue-style" 
    tabindex="1" value="#{reworkQueueMB.queueType}" onselect="alert('2');" >
    <f:selectItems value="#{queueMB.queueSelectItems}" />
</h:selectOneMenu>

Когда я выбираю элемент меню выбора, я хочу получить событие select, но оно не работает.
Я не хочу использовать событие change, потому что, когда я выбираю элемент, который уже выбран, событие change будет запущено снова.

1 Ответ

1 голос
/ 09 июня 2011

Событие HTML DOM select запускается только при выборе (выделении) текста в поле ввода текста, например <input> и <textarea>.Но <h:selectOneMenu> отображает элемент HTML <select>, а не <input>.Это не позволяет вам выбирать текст в поле.Событие select здесь ничего не делает.

Технически, установка события click для каждого отдельного элемента <option> должна работать для вас.

<h:form id="formId">
    <h:selectOneMenu id="menuId" value="#{reworkQueueMB.queueType}">
        <f:selectItems value="#{queueMB.queueSelectItems}" />
    </h:selectOneMenu>
    <script>
        $("[id='formId:menuId'] option").click(function() {
            alert("2");
        });
    </script>
    ...

Однако, это (неудивительно) не работает в любом браузере IE, даже не в IE9.

Ваша лучшая ставка - это действительно change событие.Это полностью кроссбраузер.Совершенно другая альтернатива - вместо этого использовать группу радиокнопок, которая может быть визуализирована с помощью <h:selectOneRadio>.Событие click должно делать именно то, что вы хотите.

<h:selectOneRadio value="#{reworkQueueMB.queueType}" onclick="alert('2')">
    <f:selectItems value="#{queueMB.queueSelectItems}" />
</h:selectOneRadio>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...