0

そこで、HTML と jQuery を使用してライブ更新テーブルを作成しようとしています。各行には経費が含まれており、行の各セルには特定の数式が関連付けられています。ユーザーが行のいずれかのセルを編集すると、その行の他のセルに変更が反映されます。

例:

[Cell 1] [Cell 2] [Cell 3]

[Cell 1] = 1;
[Cell 2] = [Cell 1] * 2
[Cell 3] = [Cell 1] * 12

ぼかしまたはキーアップでテーブルが更新されればいいのですが、現在のセルを取得してその特定の行の他のセルを更新する方法がわかりません。基本的に、行のどのセルが編集されたかを確認し、それに応じて他のセルを更新します。

if(cell1 was updated) { update cell2, cell3 }

else if(cell2 was updated) { update cell1, cell3 }

else if(cell3 was updated) { update cell1, cell2 }

これを試して現在のセルの ID を取得し、それを使用してその行の別のセルの値を取得しました。うまくいきませんでした:

var id;

$(".moneyTable input").focus(function () {
             id = this;
        });

$('.moneyTable input').blur(function() {
            calculateRow(id);
        });

function calculateRow(id) {
        var a = $(id).closest('tr').children('td:eq(2)').text();
        alert(a);
    }
4

2 に答える 2

2

「現在のセルを取得して、その特定の行の他のセルを更新する方法がわかりません」

イベントハンドラーが呼び出されるthisと、問題の要素への参照になるため、そこから、それが属する行を特定できます。

$('.moneyTable input').blur(function() {
    var $thisInput = $(this),
        $thisTD = $thisInput.parent(), // or $thisInput.closest("td")
        $thisTR = $thisInput.closest("tr"),
        $otherCells = $thisTR.find("input").not(this); // and so forth
});

クリックされたセルがセル 1、2、または 3 のいずれであったかを確認する限り、いくつかの方法があります。クラスなどを与えてclass="cell1"から、次のようにします。

if($thisInput.hasClass("cell1")) {
    // do something

または.index()、行内の親 td を確認します。

if($thisTD.index() === 1) {
    // second cell (zero-based indexes)
于 2012-08-17T05:17:56.613 に答える
0

あなたが探しているのは、テーブルをスプレッドシートのように機能させるプラグインのようなエクセルだと思います

このプラグインを試してください

http://www.pengoworks.com/workshop/jquery/calculation/calculation.plugin.htm

于 2012-08-17T05:03:53.437 に答える