2010-12-04 87 views
2

我需要做一些事情時,從文本框中發出模糊事件。使用jQuery緩存模糊事件

問題是當用戶按下「Enter」鍵 並且在其他地方點擊鼠標時,模糊事件也被觸發。

我需要做一些特定的動作,當鼠標點擊其他地方;我會怎麼做?

+0

我不清楚這裏;你能說出你真正想要的模糊事件,以及你不想要的模糊事件嗎? – 2010-12-04 12:38:01

回答

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> 

它使用的標誌(命名爲「模糊」,存儲在輸入數據內)。

因此,如果模糊事件觸發,此標誌首先設置爲1,稍後設置爲0(此時應該足以點擊以前觸發)。如果點擊文檔,它只是檢查這個標誌。

1

這也可能幫助:延緩模糊事件操作它觸發按鈕單擊事件之前

設置定時器。

//命名空間定時器VAR的SetTimer = {計時器:空}

$('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(); 
    });