使用jQuery缓存blur事件

时间:2010-12-04 11:47:04

标签: javascript jquery

我需要在从文本框中触发模糊事件时执行某些操作。

问题是当用户按下“Enter”键时也会触发blur事件 当鼠标在其他地方被点击时。

当鼠标在其他地方被点击时,我需要做一些特定的动作;我该怎么做?

2 个答案:

答案 0 :(得分:1)

这也可能有所帮助:

设置计时器,在触发按钮点击事件之前延迟模糊事件操作。

// timer var setTimer = {timer:null}

的命名空间
    $('input,select').blur(function () {
        setTimer.timer = setTimeout(function () {
           functionCall();
        }, 1000);
    });

    $('input,select').focus(function () {
        setTimer.timer = setTimeout(function () {
            functionCall();
        }, 1000);
    });

    $("#btn").click(function () {
        clearTimeout(setTimer.timer);
        functionCall();
    });   

答案 1 :(得分:0)

这可能是一种方式:

<script src="http://code.jquery.com/jquery-1.4.4.js"></script>
<input id="txtbox" ><input>

<script>

$(document).click(function()
                    {
                      if($('#txtbox').data('blurred')==1)
                      {
                        $('#txtbox').data('blurred',0);
                        alert('blurred by click');
                      }
                    }
                  );

$('#txtbox').blur(function(e)
                  { var _this=this;$(_this).data('blurred',1);
                    setTimeout(function(){$(_this).data('blurred',0);} ,200);
                  }
                 ).unbind('click');

</script>

它使用一个标志(名为'blur',存储在输入数据中)。

因此,如果模糊事件触发,则此标志首先设置为1,稍后设置为0(此时此刻应该足以使点击之前触发)。如果在文档上单击触发,它只会检查此标志。