1

<h:datatable>2 つの列を持つ JSFがあります。

  • 列 1 :<h:outputText>は、Bean データから取り込まれます。
  • 列 2 :<h:inputText>ボックス。

テーブルの外に「合計」フィールドがあり、列2に入力されたフィールドの合計をリアルタイムで表示したい。だから私は周りを検索して、これを行うには JavaScript が必要であることがわかりました。しかし、私はJSにかなり慣れていません。

私が混乱しているのは、入力テキスト ボックスの値にアクセスする方法です。私がこれまでに行ったこと:

function totalFrom() {
    var element = document.getElementById('transferFundsForm:fundsFromTable:0:from_transferAmt');
    if(element != null){
        document.forms['transferFundsForm']['transferFundsForm:totalFrom'].value = document.forms['transferFundsForm']['transferFundsForm:totalFrom'].value+ element;
    }
}

私が理解している限りtransferFundsForm:fundsFromTable:0、ここ0では最初の行を表します。編集中の列の要素を参照するにはどうすればよいですか?

onblur列の textBox のイベントでこの関数を呼び出しました。

また、これにも使用できると読みました<f:ajax>が、Faceletsの代わりにJSPを使用しているため、使用できません<f:ajax>

4

2 に答える 2

1

element の HTML DOM 要素表現には、すべての要素の配列を提供<table>するrowsプロパティ<tr>があります。この<tr>要素の HTML DOM 表現には、すべての要素の配列を提供するcellsプロパティ<td>があります。

したがって、テーブルの 2 列目に、<input>合計したい値を保持する要素が1 つだけ含まれていて、それtotalFromが要素である<input>場合 (少なくとも、 ではvalueなくプロパティを設定しようとしていますinnerHTML)、達成できます。これは次のとおりです。

function totalFrom() {
    var table = document.getElementById('transferFundsForm:fundsFromTable');
    var total = 0;

    for (var i = 0; i < table.rows.length; i++) {
        var secondColumn = table.rows[i].cells[1];
        var input = secondColumn.getElementsByTagName('input')[0];
        var value = parseInt(input.value);

        if (!isNaN(value)) {
            total += value;
        }
    }

    document.getElementById('transferFundsForm:totalFrom').value = total;
}

totalFromただし が の場合は、<h:outputText id="totalFrom">代わりに次のように設定します。

    document.getElementById('transferFundsForm:totalFrom').innerHTML = total;
于 2013-01-05T15:38:14.160 に答える
-1

jsf サーバー側イベントまたはユーザーhttp://livedemo.exadel.com/richfaces-demo/を使用しないのはなぜですか 。組み込みの ajax 機能も提供します。

于 2013-01-04T12:54:28.373 に答える