jQuery:如何在onblur之前先点击onclick?

时间:2011-06-23 03:17:27

标签: jquery javascript-events

如果我目前专注于jQuery中的文本框,如何在onblur事件之前首先触发onclick事件?

预期输出:在texbox中的模糊事件之前首先触发按钮单击事件。提醒“mybtn onclick alert”

演示: http://jsfiddle.net/Zk8Fg/

代码:

<input type="text" name="fname" id="fname" value="" /><br />
<input type="button" name="mybtn" id="mybtn" value="Click Me" />

<script language="javascript">
$(document).ready(function() {
    myFunc();
});

function myFunc() {
    $('#fname').focus().blur(function() {
        alert('fname onblur alert'); 
    });

    $('#mybtn').click(function() {
        alert('mybtn onclick alert'); 
    });
}
</script>

谢谢:)

2 个答案:

答案 0 :(得分:6)

嗯,它可能是标准的一部分,哪个事件首先触发,所以你可能不应该改变顺序。你可以做的是推迟使用window.setTimeout产生的最终动作。

$('#fname').focus().blur(function() {
    window.setTimeout(function(){alert('fname onblur alert')},0.1); 
});

我同意其他评论,但看起来你应该重新考虑如何解决这个问题,因为重新排序默认事件会让我觉得这是一个可能有更优雅解决方案的蹩脚黑客。

答案 1 :(得分:3)

如果输入字段目前已聚焦,则在不先模糊当前焦点的情况下,无法关注其他元素。无论你想做什么,都可能有更好的方法。

可见的事件记录:http://jsfiddle.net/Zk8Fg/3/