0

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

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

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

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

4

5 回答 5

1

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

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

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

    $('#myButton').focus(function(){
        clearTimeout(timer);
    });
}); 
于 2011-02-02T22:28:18.077 回答
0

你可以试试:

if(!$('#myButton').is(':focus'))
    ...
于 2011-02-02T22:23:55.147 回答
0

不知道我是否遗漏了什么,但为什么不只将模糊事件绑定到输入字段:

$("#yourInputId").live("blur", function()
{
  saveValue();
});
于 2011-02-02T22:27:00.853 回答
0

你可以简单地尝试..

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

jquery 论坛上的这篇文章表明这​​在大多数情况下都有效。

于 2011-02-02T22:27:39.820 回答
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>
于 2011-02-02T22:37:45.747 回答