Получить текст значения из p: inputText javascript

Я пытаюсь сделать что-то простое, просто чтобы получить текстовое значение внутри p:inputText Javascript, но я его не получаю. Возможно, это другая процедура с Primefaces, так как если я этого не использую, я не сталкиваюсь с этой проблемой.

Мой код:

<p:inputText value="any text" widgetVar="youtlink" ></p:inputText>
        <p:commandButton value="Search"    onclick="loadPlayer();" icon="ui-icon-search" />  


<script type="text/javascript">
    function loadPlayer() {
        alert(youtlink.text);
    }
</script>

Я пробовал также с JQuery, но также не имел успеха.

Представленный вид:

<form id="editlFrm" enctype="application/x-www-form-urlencoded" method="post"
name="editlFrm">
    <input id="editlFrm:j_id_7" class="ui-inputfield ui-inputtext ui-widget ui-state-default ui-corner-all"
    type="text" value="assd" name="editlFrm:j_id_7" role="textbox" aria-disabled="false"
    aria-readonly="false" aria-multiline="false">
    <button id="editlFrm:j_id_8" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-icon-left"
    type="submit" onclick="loadPlayer();;PrimeFaces.ab({source:'editlFrm:j_id_8'});return false;"
    name="editlFrm:j_id_8" role="button" aria-disabled="false">

Ответ 1

Добавьте id в свой <p:inputText

как это

<p:inputText id="someID" value="any text" widgetVar="youtlink" ></p:inputText>

убедитесь, что ваша форма получена prependId="false"

чем доступ к значению, подобному этому

alert(jQuery('#someID').val());

если вы не хотите добавлять prependId="false" в свою форму, вам придется изменить селектор jquery с jQuery('#someID').val() на jQuery("[id$='someID']").val()


ИЗМЕНИТЬ

так как ваша форма называется editlFrm

попробуйте это сделать (обязательно присвойте идентификатор someID вашему p:inputText)

alert(jQuery('#editlFrm\\:someID').val());

Ответ 2

Я столкнулся с этим вопросом при попытке сделать что-то подобное и обнаружил, что PrimeFaces предоставляет элемент JQuery виджета через свойство jq.

Итак, в вашем примере вы можете просто сделать:

function loadPlayer() {
    alert(youtlink.jq.val());
}

В более поздних версиях PrimeFaces (начиная с версии 5.0) экспортированные виджеты, похоже, больше не загрязняют глобальное пространство имен, но их нужно получить с помощью метода PF(). Однако элемент JQuery может быть доступен тем же способом.

function loadPlayer() {
    alert(PF('youtlink').jq.val());
}

Ответ 3

Мое, я думаю, самый простой способ:

PF('youtlink').jq.val();

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

PF('youtlink').jq.val('new value');

другой способ:

PrimeFaces.widgets.youtlink.jq.val()

и другим способом, если у вас есть ID:

$(PrimeFaces.escapeClientId("yourFormID:youtlink")).val()

с PF 5.3

Ответ 4

Кроме того, есть простой способ с javascript:

<h:form id="yourID" >
    <p:inputText id="anyID" value="any text" widgetVar="youtlink" ></p:inputText>
</h:form>

function loadPlayer() {
    alert(document.getElementById('yourID:anyID').value);
}