質問

次のような JSF コードがあります。

<h:inputText id="from" value="#{fromToMBean.fromName}"/>

JavaScript からこの要素を ID で取得したいと考えています (from)しかし、生成された HTML では次のようになっているため、できません。 j_idt8:from

たとえば、この要素を取得するにはどうすればよいですか。jQuery?JSF2にIDを変更させないように強制する方法はありますか?

役に立ちましたか?

解決

あなたはどちらかだけ、この要素と使用CSSセレクタに割り当てるか、フォームにIDを割り当てるとID formid:fromを持つ要素を取得するカスタムクラスを使用することができます。

他のヒント

  

の変化IDにないJSF2を強制する方法はありますか?

あなたが生成されたHTMLにprependId="false"この方法を設定することができ、それはをj_idt8の代わりに のからになります。のから

prependId:のフラグこのフォームが先頭に付加すべきであるか否かを示します  clientIdを生成中にその子孫のIDとそのID  処理する。このフラグが設定されていない場合、デフォルト値はtrueです。

  

どのように私は、例えば、この要素を取得することができますjQueryの?

あなたは、この要素を取得するためにjQueryのでancestorComponent:fromを使用することができます。

実際の j_idt8 の中の j_idt8:のからあなた<h:inputText/>の祖先コンポーネントの自動生成されたIDは、

<h:form id="form">
<h:inputText id="from" value="#{fromToMBean.fromName}"/>
</h:form>

入力テキストの今生成されたIDは、の形式になります:

から あなたのブラウザ以外のコンポーネントにidを指定しない場合は、その動的に生成されます。だから、コンポーネントにIDを提供することを忘れないでください。

ではJSF 1.2あなたはforceId = "true" を使用することができます。あなたがトン使用できるかどうかはわからない:JSF 2で入力しますが、次のことができるようにすべきです。そして、HTMLでのそれのIDはあなたが期待するものになります。

、コンポーネントの完全なIDを達成EL暗黙オブジェクトを使用し、そのような#{cc.clientId}#{component.clientId}としてのそれらの特性のために、

。出典: JSF 2.0 を有する容器を命名内部コンポーネントのclientIdの完全なプレフィックスを取得する。

jQueryが使えます。単純に、セレクターに含めるテキストを定義するセレクターを使用します。このようなもの:

$( "input[name*='from']" )

'*=' name 属性に何らかの文字列が含まれていることを示すために使用されます。も存在します '~=' 同様の意味で。

詳細な説明と例については、次のサイトを参照してください。 http://api.jquery.com/attribute-contains-selector/

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top