如何让jQuery .change()引用Handsontable上的单元格?

时间:2015-02-11 10:41:41

标签: javascript jquery handsontable

尝试:我想将Handsontable上的用户更改保存到数据库中。我认为我可以做的一种方法是使用隐藏的html表单,其中表单输入被引用到Handsontable中的特定单元格。

问题:我无法在.change函数中引用Handsontable中的特定单元格。

我在下面尝试的内容:尝试将用户所做的任何更改添加到单元格行(2)第(2)行,并将html表单id row2col2formInput更改为该值。

    <script>
            //fetch handsontable input for row 2 colum 2 and change corresponding hidden form input
            $("#example").handsontable.(data[2][2]).change(function() {
                $("#row2col2formInput").val($(this).val());
            });


$(document).ready(function () {


  var
 data = [
    ['', 'Kia', 'Nissan', 'Toyota', 'Honda'],
    ['2008', 10, 11, 12, 13],
    ['2009', 20, 11, 14, 13],
    ['2010', 30, 15, 12, 13]
  ],
    container = document.getElementById('example'),
    hot;  


  hot = new Handsontable(container, {
    data: data,
    minSpareRows: 1,
    colHeaders: true,
    contextMenu: true
  });


});


</script> 

1 个答案:

答案 0 :(得分:1)

首先,你说你引用单元格的行是错误的。并且你无法通过你所做的方式来引用一个单元格。不管你怎么说都不应该。

这是实现这项任务的另一种方式,顺便说一下,我们大多数人都使用HOT做的事情。

我不知道你的数据库结构,所以很难说,所以让我们说你正在使用SQL,并且每一行都是某个表上的物理行。你的数据库。现在,正如您所知,SQL中的每一行都应该有一个唯一的主自动增量键,您可以使用它来引用行,当您开始在HOT中的行中进行混洗时,这会派上用场。

现在让我们假设你有一个简单的JS和你所描述的HOT实例。 data对象是向HOT实例提供数据的对象,但更重要的是,它是一个高度变异的对象。当用户对单元格进行更改时,此对象会发生变异。

这意味着您可以在某个地方添加Submit按钮,以便在此时抓取对象并将其发送到您的数据库。这是经常使用的一种方法。这是唯一的SQL id派上用场的地方。您的data对象可能会将此ID附加到现有行并将其设为隐藏列(无需向用户显示此信息)。

如果用户创建了一个新行,那么你可以附加一个负递减的整数(表示数据库中的&#34; new&#34;行),当用户提交时,你只需遍历{{ 1}}对象并对具有正ID的行执行UPDATE,对具有负IDS的行执行INSERT。

关于它。另一个选择是,您可以使用data事件自动将每次更改保存到数据库中。你的功能会说像

afterChange

希望这有帮助!