简体   繁体   中英

Caching the blur event using jQuery

I need to do something when a blur event is fired from a text box.

The problem is the blur event is also fired when the user presses the "Enter" key and when the mouse is clicked somewhere else.

I need to do some specific action when the mouse is clicked somewhere else; how would I do it?

This might also help:

Set timer that delays the blur event action before it fires the button click event.

// Namespace for 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();
    });   

This may be a way:

<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>

It uses a flag(named 'blurred', stored inside the input's data).

So if the blur-event fires, this flag is first set to 1 and a moment later set to 0(this moment should be enough for click to fire before). If click fires on document, it just checks this flag.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM