Повторно введите поле с помощью команды javascript

У меня есть 2 поля. Одним из них является ах: выберите OneMenu со списком мест. другой ах:inputText.

Я пытаюсь сделать следующее: если пользователь выберет место в selectOneMenu и нажмет на поиск, он будет искать это место. Если он выбирает место в selectOneMenu и все еще печатает в другом месте на inputText и нажимает на поиск, он будет искать место, которое было написано, а не выбранное.

Таким образом, было бы замечательно, если бы пользователь вводил что-либо в тексте ввода, он отключил бы selectOneMenu, и если он очистил поле, он был бы снова включен. Я пробовал с javascript на событие

onchange="if (this.value!='') document.getElementById('placeSelectOneMenu').disabled='true'"

но это не сработало. Что я могу сделать? Есть идеи?

Это работает только тогда, когда я нажимаю на поиск, затем корректно переопределяем поле. То, что я хочу, - это рендеринг динамически.

1 ответ

Решение

Идентификатор элемента должен быть идентификатором сгенерированного идентификатора элемента HTML, а не идентификатором компонента JSF. В JavaScript совершенно отсутствует представление о JSF-коде на стороне сервера. Все, что он может увидеть и получить к нему доступ - это просто дерево HTML DOM, сгенерированное JSF. Откройте страницу в браузере, щелкните ее правой кнопкой мыши и выберите " Просмотр источника". Сгенерированный HTML <h:selectOneMenu id="placeSelectOneMenu"> должен выглядеть так

<select id="someFormId:placeSelectOneMenu">

(где someFormId это идентификатор родителя <h:form> )

В этом случае вам нужно получить его следующим образом

document.getElementById('someFormId:placeSelectOneMenu')

Но поскольку изменение элементов ввода HTML на стороне клиента без уведомления JSF на стороне сервера может привести к неожиданным действиям (если вы включите его на стороне клиента с помощью чистого JS, то он не будет волшебным образом включен на стороне сервера, так как хорошо, и JSF не будет обрабатывать переданное значение поля, которое было изначально отключено), и что вы используете RichFaces, я бы предложил использовать чистый подход JSF, например, с RichFaces 3.x <a4j:support> тег.

Другие вопросы по тегам