我目前正在创建一个定制的CMS。我正在处理的具体部分是管理照片库。在用户可以更新某个专辑中的详细信息的页面上,我使用jQuery的$.ajax
进行大量更新。
例如,每个图像旁边都有一个标题字段,我将focusout
事件绑定到我的ajax调用,这非常有效,并且可以让用户快速浏览并更新所有照片的标题。
但是,由于我绑定了focusout
事件,因此可能会被调用很多,特别是在没有必要时。比如说,他们选中三个不改变的字段。每次按Tab键时都会进行$.ajax
调用,即使他们没有更改输入值。
所以,我的问题是如何存储和检测某个值是否与最初的值不同(或上次调用ajax时)?
可以使用jQuery的.data()
吗?
答案 0 :(得分:1)
正确执行此操作的关键是将数据与输入字段分开。当用户模糊输入框时,您可以根据内存数据检查值。如果值不同,则执行ajax请求。如果没有,你什么都不做,并保存往返。
你可以自己编写这些内容,但是在过去几年中出现了很多框架,这些框架非常好。其中:
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);