有一个文本输入字段和一个按钮。
<input type="text" id="myInput" onblur="saveValue();" />
<input type="button" id="myButton" />
在Blur事件(输入字段)上,调用一个函数(saveValue)。如果当前焦点是按钮(myButton),我不想调用该函数。
我怎样才能在JQuery中做到这一点?
答案 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>