有一个文本输入字段和一个按钮。
<input type="text" id="myInput" onblur="saveValue();" />
<input type="button" id="myButton" />
在 Blur 事件(输入字段)上,调用一个函数(saveValue)。如果当前焦点是按钮 (myButton),我不想调用该函数。
我怎样才能在 JQuery 中做到这一点?
你不能可靠地做到这一点,因为一个元素在聚焦下一个元素之前就已经模糊了。最接近的近似值是设置一个超时,如果按钮获得焦点则清除该超时:
$(document).ready(function(){
var timer;
$('input').blur(function(){
timer = setTimeout(saveValue, 100);
});
$('#myButton').focus(function(){
clearTimeout(timer);
});
});
你可以试试:
if(!$('#myButton').is(':focus'))
...
不知道我是否遗漏了什么,但为什么不只将模糊事件绑定到输入字段:
$("#yourInputId").live("blur", function()
{
saveValue();
});
你可以简单地尝试..
$(':focus').each(function(){
if($(this).attr('id') == 'myButton'){
//do stuff here
}
});
jquery 论坛上的这篇文章表明这在大多数情况下都有效。
我不确定我是否正确理解了您的问题。这是我的尝试:为输入文本创建 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>