简化jquery自动保存文本
streamline jquery autosave text
$("textarea").bind("keyup", function () {
var keyName = $(this).attr("data-rkn-keyName");
autoSave(keyName, this.value);
});
function autoSave(key, value) {
$.ajax({
url: "/Admin/SaveLookup",
type: "POST",
data: ("keyName=" + key + "&value=" + value),
success: function (data) {
if (data) {
$('#saved-signal').show().fadeOut(1500);
}
}
});
}
我在一个页面上有几个文本区域,我想让它们自动保存用户输入。被编辑的数据是一组键/值对,textarea是值,textarea的'data-rkn- keyname '属性是键。
所以上面的代码有点工作,但如果用户键入快,它不会捕获最后一个或两个字符。所以我这样修改:
$("textarea").bind("keydown", function () {
var keyName = $(this).attr("data-rkn-keyName");
var keyValue = $(this).value;
setTimeout(function (keyName, keyValue) {
autoSave(keyName, keyValue);
}, 2000);
});
所以,添加计时器打破它,autoSave确实被调用,但我有一种感觉var正在失去他们的值.....可能与变量作用域有关。所以这是我能解决的一个小问题……更重要的是(和我的帖子的目的),问题:我将实例化一个新的计时器对象和ajax调用(=数据库命中),每次按下一个键?或者setTimeout重置相同的对象,如果你反复调用它?
我想要的是调用autoSave函数在按下按键后的一秒钟或两秒钟,但只有当没有按键在那段时间内按下…换句话说,如果用户暂停2秒……启动保存功能
或者有更好的自动保存方式?
谢谢
谢谢
setTimeout
接受不带任何参数的匿名函数。当您将keyName
和keyValue
作为输入参数时,匿名函数将为这两个参数接收nil。只要去掉参数,值就会成功传递。
$("textarea").bind("keydown", function () {
var keyName = $(this).attr("data-rkn-keyName");
var keyValue = $(this).value;
setTimeout(function () {
autoSave(keyName, keyValue);
}, 2000);
});
相关文章:
- 如何在文本框中保存文本
- 保存文本框数据并从本地存储返回 - angularJS -
- 动态注入时保存文本区域值的夏季注释问题
- 根据类添加空格以保存文本文件
- ASP.NET 如果文本在“大于”和“小于”符号之间给出,则无法保存文本框
- 使用哈希标记保存文本(Javascript - PHP - MySQL)
- 加载保存文本区域不起作用,如图所示
- 保存文本中光标高亮显示的位置
- 使用编辑区域javascript插件时正在保存文本区域
- 关于在数据库(SQL)中保存文本数据的要求
- 保存文本框值
- PHP保存文本文件,然后在另一个页面上显示它并不是每次都工作
- 通过AJAX提交表单时保存文本框建议/自动完成
- 我可以通过document.execCommand(' save As',…)保存文本吗?我总是返回一些
- HTML5 Javascript.如何保存文本区域输入,然后通过按钮加载它
- 用户选择'其他'后保存文本框数据;下拉框中的选项
- 如何使用JavaScript在HTML中突出显示和保存文本
- 输出XMLSerializer().serializeToString到用户可保存文本窗口的字符串
- 简化jquery自动保存文本
- 使用filesver .js和Blob.js用javascript保存文本文件