【问题标题】:a good way to check which row is changed (html/jquery/php)检查哪一行被更改的好方法(html/jquery/php)
【发布时间】:2010-02-24 23:36:21
【问题描述】:

我有一个用 php 生成的 html 表。

这个列表可以有超过20000条记录,所以我在这个列表上添加了一个分页。 在此列表中,您可以修改您喜欢的行,当您点击保存时,它会将更改保存在临时表中,并且只有在您点击应用更改后,实际更改才会应用到主表中。在您点击应用更改之前,它会在列表中显示带有指示符的更改行。

现在这一切正常,但目前当您只更改显示的 50 行中的 1 行时,它会将 50 行保存在临时表中。这为我提供了所有 50 条记录的指标(不是我真正想要的)。

我的问题是:在将其保存在我的临时表中之前,有什么好方法可以知道更改了哪一行?

【问题讨论】:

  • 临时表中的“已更改”标志字段不是一个选项吗?
  • 如何更改行?临时表什么时候更新?

标签: php jquery html


【解决方案1】:

您可以在 JavaScript 中使用事件委托。您在父级而不是单个子级上附加事件侦听器,然后侦听事件并检查目标。

每个 Event 对象都有一个 target 属性。目标是触发事件的对象。

您可以在 jQuery 文档网站上看到一个很好的示例:http://docs.jquery.com/Events/jQuery.Event#event.target

事件委托对需要事件处理程序的大量数据特别有用。 阅读更多关于什么是事件委托:http://icant.co.uk/sandbox/eventdelegation/

【讨论】:

【解决方案2】:

好的,我找到了解决我自己问题的方法。

在 jquery 的帮助下,我设法实现了我的解决方案。

我在表格中添加了一个隐藏的文本字段,其中包含 class="changed"。

我在每个字段上有 4 个可编辑字段(2 个日期字段和 2 个复选框)我添加了一个 jquery click 函数,该函数基于我列表中所有字段相同的类名(每行 4 个不同的类名)。

jquery 示例复选框:

$('input.activated').click(function(){

    $(this).parents('tr').find('input.changed').attr('value', 'changed');

});

所以当我现在单击保存修改时 -> 我的 php 代码检查隐藏字段是否等于“已更改”以将更改的行保存在我的临时表中。

在我看来这是一个很好的解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-09
    • 1970-01-01
    相关资源
    最近更新 更多