如何检测自设置后表单输入的值是否已更改

时间:2011-10-29 14:35:56

标签: php javascript jquery html input

我目前正在创建一个定制的CMS。我正在处理的具体部分是管理照片库。在用户可以更新某个专辑中的详细信息的页面上,我使用jQuery的$.ajax进行大量更新。

例如,每个图像旁边都有一个标题字段,我将focusout事件绑定到我的ajax调用,这非常有效,并且可以让用户快速浏览并更新所有照片的标题。

但是,由于我绑定了focusout事件,因此可能会被调用很多,特别是在没有必要时。比如说,他们选中三个不改变的字段。每次按Tab键时都会进行$.ajax调用,即使他们没有更改输入值。

所以,我的问题是如何存储和检测某个值是否与最初的值不同(或上次调用ajax时)?

可以使用jQuery的.data()吗?

来完成

3 个答案:

答案 0 :(得分:1)

正确执行此操作的关键是将数据与输入字段分开。当用户模糊输入框时,您可以根据内存数据检查值。如果值不同,则执行ajax请求。如果没有,你什么都不做,并保存往返。

你可以自己编写这些内容,但是在过去几年中出现了很多框架,这些框架非常好。其中:

Backbone.js

Spine.js

Knockout.js

Backbone似乎是最受欢迎的。

答案 1 :(得分:0)

您必须隐藏输入类型中存储的原始值,并比较每个focusout事件中的原始值和当前值。

答案 2 :(得分:0)

使用非常简单的jQuery解决:

在document.ready中:

$('.caption_field').each(function() {
    var startval = $(this).val();
    $(this).data('setval',startval);
});

然后当进行ajax调用时:

if (caption == $(this).data('setval')) return; // not changed

当通话返回成功时:

field.data('setval',caption);