0

所以我正在尝试使用 HTML 和 jQuery 创建一个实时更新表。每行都包含费用,并且行中的每个单元格都附加了一个特定的公式。如果用户编辑一行中的任何单元格,那么该行中的其他单元格将反映更改。

例子:

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

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

如果表格在模糊或 keyup 上更新,我会喜欢它,但我不知道如何获取当前单元格,并更新该特定行中的其他单元格。基本上,我会检查行中的哪个单元格被编辑,并相应地更新其他单元格。

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

我认为您正在寻找的是类似 exel 的插件,它可以让您的表格像电子表格一样工作

试试这个插件我想这就是你想要的

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

于 2012-08-17T05:03:53.437 回答