Javascript 在onblur()事件上触发Ajax帖子

Javascript 在onblur()事件上触发Ajax帖子,javascript,jquery,ajax,dom-events,onblur,Javascript,Jquery,Ajax,Dom Events,Onblur,我有一个Ajax问题 有一个输入字段,我想在onblur()事件中提交更改后的值。除了有令人恼火的闪烁外,一切正常 我键入新值并单击“离开”。然后,在值更改为新值之前,旧值会向后闪烁 我就是这样做的。我将onblur函数附加到输入元素: onblurevent = function() { HN.Gui.HTML.post(bindingpage, bindingref, this.value); }; HN.Util.addEvent(elem, "blur&

我有一个Ajax问题

有一个输入字段,我想在
onblur()
事件中提交更改后的值。除了有令人恼火的闪烁外,一切正常

我键入新值并单击“离开”。然后,在值更改为新值之前,旧值会向后闪烁

我就是这样做的。我将
onblur
函数附加到输入元素:

  onblurevent = function()
  {
    HN.Gui.HTML.post(bindingpage, bindingref, this.value);
  };
  HN.Util.addEvent(elem, "blur", onblurevent);
该事件与一个util函数绑定:

HN.Util.addEvent = function(obj, type, fn)
{
  if ( obj.attachEvent ) {
    obj['e'+type+fn] = fn;
    obj[type+fn] = function(){obj['e'+type+fn]( window.event );};
    obj.attachEvent( 'on'+type, obj[type+fn] );
  } else
    obj.addEventListener( type, fn, false );
};
当它触发时,会触发jQuery post:

HN.Gui.HTML.post = function(page, ref, value)
{
    var json = (value == "")
    ? {clear: "contents"}
    : {set: {formula: value}};

  var url = page + ref + "?attr";

  $.post(url, JSON.stringify(json));
};

这一切都非常简单。

事实证明,这是我们Ajax更新周期的一个产物:

  • 前端变更
  • 后置
  • 从后端到前端的COMET更改通知
  • 重新绘制前端

  • 问题是通知触发了两次,一次是在“新”值出现之前,一次是在触发时,这导致了闪烁…

    你能发布你正在做的事情的代码示例吗?Seth,发布了更多详细信息…在我的Linux开发机器Firefox和Galeon上,你看到了哪些浏览器的闪烁。在Firefox、Safari和Chrome的产品中……如果你找到了自己问题的解决方案,将其作为答案发布,并接受你的答案。