在JQuery中,如何立即阅读焦点元素?

时间:2011-02-02 22:21:42

标签: jquery focus onblur

有一个文本输入字段和一个按钮。

<input type="text" id="myInput" onblur="saveValue();" />    
<input type="button" id="myButton" />

在Blur事件(输入字段)上,调用一个函数(saveValue)。如果当前焦点是按钮(myButton),我不想调用该函数。

我怎样才能在JQuery中做到这一点?

5 个答案:

答案 0 :(得分:1)

你无法可靠地做到这一点,因为在下一个元素聚焦之前,一个元素是模糊的。最接近的近似值是设置一个超时,如果按钮聚焦,则清除该超时:

$(document).ready(function(){
    var timer;

    $('input').blur(function(){
        timer = setTimeout(saveValue, 100);
    });

    $('#myButton').focus(function(){
        clearTimeout(timer);
    });
}); 

答案 1 :(得分:0)

您可以尝试:

if(!$('#myButton').is(':focus'))
    ...

答案 2 :(得分:0)

不确定我是否遗漏了某些内容,但为什么不将blur事件仅绑定到输入字段:

$("#yourInputId").live("blur", function()
{
  saveValue();
});

答案 3 :(得分:0)

你可以试试..

$(':focus').each(function(){    
   if($(this).attr('id') == 'myButton'){
     //do stuff here
   } 
});

jquery论坛上的这个post表明这在大多数情况下都适用。

答案 4 :(得分:0)

我不确定我是否理解你的问题。这是我的尝试: 为输入文本创建css类,并使用jquery以这种方式引用它。

以下是代码示例:

<input type="text" id="txtName" class="input-text" />
<input type="submit" value="Submit"/>

<script type="text/javascript">
$(function(){
  $('.input-text').blur(function(){
    var $this = $(this);
    //Call function save value by passing the reference of the current object
    SaveValue($this);
  });
});
</script>