web-dev-qa-db-ja.com

p:inputTextjavascriptから値のテキストを取得します

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">
12
cri_sys

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と呼ばれるので

これを試してください(必ずsomeIDIDを_p:inputText_に割り当ててください)

_alert(jQuery('#editlFrm\\:someID').val());
_
12
Daniel

同様のことをしようとしたときにこの質問に出くわし、PrimeFacesがjqプロパティを介してウィジェットのJQuery要素を公開していることを発見しました。

したがって、あなたの例では、次のことを簡単に行うことができます。

_function loadPlayer() {
    alert(youtlink.jq.val());
}
_

最近のPrimeFacesバージョン(5.0以降)では、エクスポートされたウィジェットはグローバル名前空間を汚染しないようですが、PF()メソッドを使用してアクセスする必要があります。ただし、JQuery要素には引き続き同じ方法でアクセスできます。

_function loadPlayer() {
    alert(PF('youtlink').jq.val());
}
_
8

私は最も簡単な方法だと思います:

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

次のように入力フィールドの値を設定することもできます。

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

他の方法:

PrimeFaces.widgets.youtlink.jq.val()

iDをお持ちの場合は別の方法:

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

pF5.3でテスト済み

5
Michal.S

また、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);
}
0
Edson Cezar