ホームページ > ウェブフロントエンド > jsチュートリアル > JavaScript で JSF コンポーネント ID にアクセスするにはどうすればよいですか?

JavaScript で JSF コンポーネント ID にアクセスするにはどうすればよいですか?

Patricia Arquette
リリース: 2024-11-27 11:50:12
オリジナル
257 人が閲覧しました

How to Access JSF Component IDs in JavaScript?

JavaScript で使用するための JSF コンポーネントの ID を知る

JavaScript では、getElementById 関数を利用してコンポーネントにアクセスできます。ただし、JSF はコンポーネント ID を動的に生成するため、コンポーネントの ID を取得することが重要です。この記事では、JavaScript で使用するコンポーネントの ID を取得する方法について説明します。

JavaScript コードを介して inputText コンポーネントにアクセスする次のシナリオを考えてみましょう:

<h:inputText>
ログイン後にコピー
function myFunc() {
  // Get the inputText component's contents
  alert("Your email address is: " + document.getElementById("emailAddress").value);
}
ログイン後にコピー

ドキュメントの使用生成された HTML DOM 要素を含む .getElementById

生成された HTML DOM 要素には次の構造がありますJSF で指定した ID とは異なります。生成されたコードを調べると、割り当てられた ID がわかります。たとえば、上記の例の inputText は次のようにレンダリングされる可能性があります。

<input type="text">
ログイン後にコピー

ここで、「j_id0:emailAddress」は、JSF によって生成された HTML DOM 内の実際の ID を表します。したがって、JavaScript でコンポーネントを正確に参照するには、指定された ID の代わりに生成された ID を使用してください。

JSF NamingContainer の固定 ID の設定

あるいは、JSF NamingContainer に固定 ID を割り当てることもできます。フォームなどのコンポーネントを使用して、JSF による ID の自動生成を防ぎます。例:

<h:form>
ログイン後にコピー

この設定では、フォーム ID は「formId」に固定され、inputText ID は「formId:emailAddress」になり、JavaScript で直接使用できるようになります。

バインディングで #{Component.clientId} を使用する

より高度なテクニックには、 #{component.clientId} 式とコンポーネント バインディング。例:

<h:inputText binding="#{emailAddress}" ... />
ログイン後にコピー
var input = document.getElementById('#{emailAddress.clientId}');
ログイン後にコピー

更新:

#{component.clientId} の直接使用

で言及されているブログ記事この問題は、EL 式が評価される現在のコンポーネントを参照する #{component} 参照に直接関係しています。コンポーネントの ID を取得するには、次の構文を使用します。

var input = document.getElementById('#{component.clientId}');
ログイン後にコピー

HTML DOM 要素を「this」として渡すリファレンス

別の方法は、生成された HTML DOM 要素を「this」として渡すことです。関数への参照により、コンポーネント内のコンポーネントのプロパティに直接アクセスできるようになります。 function.

<h:inputText onclick="show(this)" />
ログイン後にコピー
function show(input) {
  alert(input.value);
}
ログイン後にコピー

jQuery とイベント委任の使用

jQuery は、イベント委任とスタイル クラスを使用してコンポーネントを抽象化することで、さらに高度なオプションを提供します。

<h:inputText styleClass="someMarkerClass" />
ログイン後にコピー
$(document).on("click", ".someMarkerClass", function() {
  var $input = $(this);
  alert($input.val());
});
ログイン後にコピー

以上がJavaScript で JSF コンポーネント ID にアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート