12

我正在尝试一些简单的事情,只是为了在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">
4

4 回答 4

12

添加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 id 给你的p:inputText

alert(jQuery('#editlFrm\\:someID').val());
于 2012-07-19T10:26:32.993 回答
9

我在尝试做类似的事情时遇到了这个问题,并发现 PrimeFaces 通过jq属性公开了一个小部件的 JQuery 元素。

因此,在您的示例中,您可以简单地执行以下操作:

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

在最近的 PrimeFaces 版本中(自 5.0 起),导出的小部件似乎不再污染全局命名空间,但需要使用该PF()方法进行访问。然而,仍然可以以相同的方式访问 JQuery 元素。

function loadPlayer() {
    alert(PF('youtlink').jq.val());
}
于 2014-10-06T04:59:52.097 回答
7

我认为最简单的方法:

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

您可以像这样设置输入字段的值:

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

另一种方式:

PrimeFaces.widgets.youtlink.jq.val()

如果您有身份证,还有另一种方式:

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

用 PF 5.3 测试

于 2016-09-26T10:11:59.067 回答
0

此外,还有一种使用 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);
}
于 2016-05-02T14:15:36.920 回答