0

我们的 webapp 有一个表单,其中的字段和值会根据输入的值而变化。每次某个表单元素发生更改事件时,我们都会使用昂贵的 AJAX 调用来更新页面上的其他元素。

这适用于选择、单选按钮和复选框。当用户将内容添加到文本字段,然后单击链接而不从文本字段获得焦点时,就会出现问题。浏览器移动到一个新页面,并且永远不会保存文本字段的内容。有没有一种简单的方法来解决这个问题?AJAX 调用成本太高,每次按键都无法调用。

这是我目前的原型代码示例:

$$('.productOption input.text').invoke('observe', 'change', saveChangeEvent);
4

2 回答 2

0

您是否考虑过挂钩到窗口unload()事件?这是使用 .unload() 的 ac/p jQuery 示例。

$(window).unload(function() {
  var input = $("#MyInput");  // Text field to check for

  if(input.length > 0)
  {
     //Ajax call to save data, make sure async:false is set on ajax call.
  }
});

这使您可以通过在他们离开页面时拨打电话来解决每次按键时拨打电话的问题。

于 2010-05-17T22:02:50.080 回答
0

使用原型,您可以在键入并发送 ajax 查询时进行 PeriodicExecuter 侦听,例如 2 秒内没有发生任何事情,并且自上次 AJAX 请求以来值已更改。使用焦点事件启动执行器并使用模糊事件将其关闭,这样您一次只需要一个执行器

于 2010-05-17T22:03:23.527 回答