0

私はデータテーブルを反復しているフォームを持っています。各行には一連のコンポーネントがあり、そのうちの1つは次のとおりです。

<h:selectOneRadio id="chargeWaive" onclick="alert(this.id);" >              <f:selectItem itemLabel="Charge" itemValue="charge" />                  <f:selectItem itemLabel="Waive" itemValue="waive" />
</h:selectOneRadio>

2 つの同様の機能をトリガーする 2 つのリンクを追加しました。

<a href="#" onclick="selectAllCharge();">
   <h:outputText value="Charge All" />
</a>

<a href="#" onclick="selectAllWaive();">
   <h:outputText value="Waive All" />
</a>

そのため、ユーザーがこれらのリンクの 1 つをクリックすると、すべての Charge/Waive ラジオボタンがオンになっている必要があります。

次のコードのいずれかを使用して最初のラジオ ボタン (テスト目的) をチェックしようとしましたが、常に同じエラーが発生します。

$('#frmResults:billingRecordId:0:chargeWaive:0').attr('checked', true);   $('#frmResults:billingRecordId:0:chargeWaive:0').attr('checked', 'checked');
$('#frmResults:billingRecordId:0:chargeWaive:0').prop("checked", true); 

私が得ているエラーは次のとおりです: Sintax error, unrecognized expression:billingRecordId

コンパイルされた JSF コードを調べると、ラジオタイプに対して生成された ID は次のようになるため、ID が正しいことはわかっています。

<input type="radio" name="frmResults:billingRecordId:0:chargeWaive" id="frmResults:billingRecordId:0:chargeWaive:0" value="charge" onclick="alert(this.id);" /><label for="frmResults:billingRecordId:0:chargeWaive:0"> Charge</label>

<input type="radio" name="frmResults:billingRecordId:0:chargeWaive" id="frmResults:billingRecordId:0:chargeWaive:1" value="waive" onclick="alert(this.id);" /><label for="frmResults:billingRecordId:0:chargeWaive:1"> Waive</label>

したがって、この時点では、ここで何が欠けているのかわかりません。何か案が?

4

3 に答える 3

2

jQueryは、CSSセレクターを使用してHTMLDOMツリーの要素を選択します。

は、構造体疑似クラス:の開始を表すCSSセレクターの特殊文字です。だからあなたが使うなら

$('#frmResults:billingRecordId')

frmResults次に、基本的にIDがで、疑似クラスがに一致するHTML要素を探しますbillingRecordId。ただし、billingRecordId有効な疑似クラスではないため、何も見つかりません。

基本的に、CSSセレクター構文でコロンをエスケープする必要があります。

$('#frmResults\\:billingRecordId\\:0\\:chargeWaive\\:0')

または、IMOクリーナーで、[id]属性セレクターを使用します。

$('[id="frmResults:billingRecordId:0:chargeWaive:0"]')

または、チェーンされたIDとインデックスを削除します。

$('[id$=":chargeWaive"]:first :radio:first')

(「IDがで終わる要素を選択し:chargeWaive、最初の要素を取得してから、最初のラジオボタンを取得する」)

参照:


まったく別の方法として、JSF ajax呼び出しを実行して、バッキングBeanのajaxリスナーメソッドでモデル値を適宜設定するだけで、目的のラジオボタンを事前に選択することもできます。

于 2012-11-01T18:40:09.927 に答える
1

コロンは、jquery セレクター内で問題を引き起こす可能性があります。2 つのバックスラッシュ ala でエスケープしてみてください:

$('#frmResults\\:billingRecordId\\:0\\:chargeWaive\\:0').attr('checked', true);
于 2012-11-01T17:59:57.930 に答える
1

この方法を試しましたか

.prop()の代わりにも使用.attr()

$('[id^="frmResults:billingRecordId:0:chargeWaive:"]').prop("checked", true); 
于 2012-11-01T18:02:53.190 に答える