0

我有一个带有模糊功能的文本区域:

$("#comment").blur(function() {
        ...something
    });

blur()当我单击下面的提交按钮时,我不希望这种情况发生。我该如何解决这个问题?

4

4 回答 4

0

正常提交是PAGE REFRESH

所以:当你的页面再次加载时,blur()代码也会被调用

于 2011-03-30T20:46:31.970 回答
0

在您的提交中,将一个变量以表明它是一个表单提交的形式传回服务器(即一个有意义的标志)。当您重新渲染页面时,使用标志渲染它,说明它是一个表单提交,在 javascript 中。在你的模糊处理程序中寻找那个标志,清除它,然后返回 false。

于 2011-03-30T20:51:30.563 回答
0

像这样的东西应该工作:

var _commentBlurTimer = 0;
$("#comment").blur(function() {
   _commentBlurTimer = window.setTimeout(function() {
      //...something
   }, 500);
});

$("input[type=submit]").click(function() {
   if (_commentBlurTimer)
      window.clearTimeout(_commentBlurTimer);
});

测试用例:http: //jsfiddle.net/yahavbr/a9xZW/

于 2011-03-30T20:51:44.790 回答
0

您是否尝试过查看当 onblur 发生时,我怎样才能找出哪个元素焦点*到*?-在这种情况下它应该会有所帮助,因此您可以根据焦点所在的位置确定是否触发“模糊”功能

于 2011-03-30T21:04:56.907 回答