2011-02-02 21 views
0

私はJSF 1.1を使用していますが、私はice:datatableを持っていて、行がバッキングBeanからフェッチされています。 編集する行を選択するには、その行のラジオボタンがあります。 ラジオボタンを使用して行を選択すると、次のエラーが発生します。私のページでJSF DataTableラジオボタンを使用して1行を選択

radio.name is undefined 

<h:selectOneRadio styleClass="none" valueChangeListener="#{bean.setSelectedItem}" 
       onclick="dataTableSelectOneRadio(this);"> 
       <f:selectItem itemValue="null" /> 
      </h:selectOneRadio> 

どれでも私のjavascript関数

function dataTableSelectOneRadio(radio) { 
    var id = radio.name.substring(radio.name.lastIndexOf(':')); 
    var el = radio.form.elements; 
    for (var i = 0; i < el.length; i++) { 
     if (el[i].name.substring(el[i].name.lastIndexOf(':')) == id) { 
      el[i].checked = false; 
     } 
    } 
    radio.checked = true; 
} 

どのように私はこのエラーを解決することができますが、次のように私はJavaScriptを呼び出すのですか?

おかげ

答えて

1

どうやらICEfacesをラジオボタンのname属性を生成しないか、生成された<input type="radio">要素にonclickを入れていません。代わりにidを使用してください。 JavaScriptコードのradio.nameradio.idに置き換えてください。無駄な場合は、生成されたHTML出力(ブラウザでページを開き、右クリックしてソースを表示)をチェックし、それに応じてJSコードを変更する必要があります。

+0

こんにちは、 私はradio.nameをradio.idに置き換えました。しかし今はエラーが発生しています radio.formは定義されていません var elements = radio.form.elements; 申し訳ありません私はhtmlのソースを見て何もできませんでした。 以下は私の変更されたjavascriptです。私のエラーを解決するためにあなたの助けが賢明に必要です。 – user75ponic

+0

ここに私のコードです function dataTableSelectOneRadio(ラジオ){ var id = radio.id.substring(radio.id.lastIndexOf( ':'))); var elements = radio.form.elements; (要素[i] .name.lastIndexOf( ':'))== id){ 要素の場合、{0} [i] .checked = false; } } radio.checked = true; } – user75ponic

+0

次に、IceFacesはラジオボタンにonclickを置くのではなく、他のいくつかの要素に置いています。申し訳ありませんが、私はIceFacesをやっていないので、さらに詳しくお手伝いできません。生成されたHTML出力を読み込み、それに応じてJSコードを変更する必要があります。 – BalusC

関連する問題