Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 不使用保存按钮动态获取和存储用户文本输入_Javascript_Html_Web Applications - Fatal编程技术网

Javascript 不使用保存按钮动态获取和存储用户文本输入

Javascript 不使用保存按钮动态获取和存储用户文本输入,javascript,html,web-applications,Javascript,Html,Web Applications,这是一个网络应用程序。 文本区域框中的用户类型信息。 信息存储在localStorage中。 现在,用户需要单击OK按钮以保留信息。 我希望信息将自动存储 正确的方法是什么?您的意思是将数据存储在本地存储器上?如果是,则可以在textarea上的每个按键上更新localstorage内容 范例 如果没有jQuery,我们需要确保所有或大多数浏览器都捕获了文本更改,这样我们就可以在文本更改时将多个侦听器附加到textarea元素,更新本地存储 function onTextChange(obj)

这是一个网络应用程序。 文本区域框中的用户类型信息。 信息存储在localStorage中。 现在,用户需要单击OK按钮以保留信息。 我希望信息将自动存储


正确的方法是什么?

您的意思是将数据存储在本地存储器上?如果是,则可以在textarea上的每个按键上更新localstorage内容

范例


如果没有jQuery,我们需要确保所有或大多数浏览器都捕获了文本更改,这样我们就可以在文本更改时将多个侦听器附加到textarea元素,更新本地存储

function onTextChange(obj) {
   var elem = obj.target;

   // If text has changed, update local-storage and save the saved
   // value with the element for later checking w/o having to read 
   // from local-storage.
   if (elem.old_value !== elem.value) {
      elem.old_value = elem.value;
      window.localStorage.setItem("textEntry", elem.value);
      console.log('saved',elem.value);
   }
   return false;
} // onTextChange()

var elem=document.getElementById('textinput');
if (elem.addEventListener){
   elem.addEventListener('input',onTextChange.bind(elem),false)
   elem.addEventListener('keyup',onTextChange.bind(elem),false)
   elem.addEventListener('change',onTextChange.bind(elem),false)
}
else if (elem.attachEvent) {
   elem.attachEvent('onpropertychange', onTextChange.bind(elem))
}

有关捕获更改的事件的更多信息,请参阅和中的示例。

Best暗示了一些评估标准,通常与您尝试但未显示的内容相比。这是非常主观的。最常见的方法是定期发送ajax请求,例如每60秒或2分钟发送一次,将此信息保存在服务器上。或者您可以使用WebSocket将信息更快地推送到服务器。谢谢。无论性能问题如何,为了兼容性的安全考虑。使用100ms计时器检查是否有更改并保存是否更好?我不知道计时器延迟会有什么帮助。你不知道这个人打字的速度有多快。由于所有的处理都在本地进行,因此没有任何负担。事实上,我通过检查和保存旧值引入了不必要的复杂性。无论如何,我应该保存当前值。
function onTextChange(obj) {
   var elem = obj.target;

   // If text has changed, update local-storage and save the saved
   // value with the element for later checking w/o having to read 
   // from local-storage.
   if (elem.old_value !== elem.value) {
      elem.old_value = elem.value;
      window.localStorage.setItem("textEntry", elem.value);
      console.log('saved',elem.value);
   }
   return false;
} // onTextChange()

var elem=document.getElementById('textinput');
if (elem.addEventListener){
   elem.addEventListener('input',onTextChange.bind(elem),false)
   elem.addEventListener('keyup',onTextChange.bind(elem),false)
   elem.addEventListener('change',onTextChange.bind(elem),false)
}
else if (elem.attachEvent) {
   elem.attachEvent('onpropertychange', onTextChange.bind(elem))
}