Получить текст значения из 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);
}