2012-07-19 58 views
11

我在尝试一些简单的操作,只是为了获得p:inputText以内的文本值,但是我没有理解它。 也许这是与Primefaces不同的过程,因为如果我不使用它,我不会遇到问题。从p:inputText获取值文本javascript

我的代码:

<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"> 
+0

你提的问题也'jQuery'标签,你要解决它呢? – Blaster 2012-07-19 10:20:12

+0

'jQuery'与渲染的HTML一起工作,所以放置你的模板/服务器端并没有什么帮助。请发布一些呈现的源代码。 – 2012-07-19 10:20:59

+0

回答

12

添加id<p:inputText

这样

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

确保您的形式得到了prependId="false"

不是像这样访问

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

的价值,如果你不希望添加prependId="false"到窗体中,你将不得不从jQuery('#someID').val() jQuery选择更改为jQuery("[id$='someID']").val()


编辑

由于您的表单名为editlFrm

试试这个(确保分配someID ID您p:inputText

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

我已经试过了,它返回我undefined。 – 2012-07-19 10:31:28

+0

+1进行编辑,可以看到呈现的源代码。 – 2012-07-19 10:34:14

+1

保持返回undEfined – 2012-07-19 11:23:07

6

我碰到这个问题,试图做同样的事情的时候来了,发现PrimeFaces通过jq属性公开Widget的JQuery的元素。

所以,在你的榜样,你可以简单地做:

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

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

function loadPlayer() { 
    alert(PF('youtlink').jq.val()); 
} 
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); 
} 
1

我的,我认为最简单的方法:

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

你甚至可以设置输入字段的值是这样的:

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

其他方式:

PrimeFaces.widgets.youtlink.jq.val() 

,如果你有ID的另一种方法:

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

与PF测试5.3