Обработка подкаталогов Apache HTTP Proxy

Вам нужно точно указать идентификатор, назначенный JSF в сгенерированном HTML-выходе. Щелкните правой кнопкой мыши страницу в своем веб-браузере и выберите View Source . Это точно код HTML, который видит JS (вы знаете, JS работает в webbrowser и перехватывает дерево HTML DOM).

Учитывая


    

Он будет выглядеть примерно так :

Где j_id0 - сгенерированный идентификатор сгенерированного элемента HTML .

Вы предпочли бы дать все JSF NamingContainer фиксированных id, так что JSF не автогенерирует их. является одним из них.


    

Таким образом, форма не получит автогенерированный ID, такой как j_id0, и поле ввода получит фиксированный идентификатор formId:emailAddress. Вы можете просто ссылаться на него как таковой в JS.

var input = document.getElementById('formId:emailAddress');

С этого момента вы можете продолжать использовать JS-код, как обычно. Например. получая значение через input.value.

См. также:


Обновление согласно вашему обновлению: вы неправильно поняли статью в блоге. Специальная ссылка #{component} относится к компоненту current , где вычисляется выражение EL, и это работает только внутри любого из атрибутов самого компонента. Все, что вы хотите, также может быть достигнуто следующим образом:

var input = document.getElementById('#{emailAddress.clientId}');

с (обратите внимание на binding на представление, вы должны абсолютно не привязать его к bean-компоненту)


, но это довольно уродливо. Лучше используйте следующий подход, в котором вы передаете сгенерированный элемент HTML DOM в качестве ссылки JavaScript this на функцию


с помощью

function show(input) {
    alert(input.value);
}

Если вы используете jQuery, вы можете сделать еще один шаг, абстрагируя их, используя класс стиля в качестве интерфейса маркера


с

$(document).on("click", ".someMarkerClass", function() {
    var $input = $(this);
    alert($input.val());
});

0
задан TGY 18 March 2019 в 15:49
поделиться