模糊和提交/点击事件的冲突



我有两个项目

item1 is textbox

item2 is submit button

现在item1blur事件在jquery。在这个模糊事件中,我有验证,如果验证失败,用户将得到确认消息。

如果用户按下yes,他可以继续

如果用户按no,文本框将为空白,需要再次输入详细信息。

所以现在我的问题是,如果用户在item1中输入详细信息并直接点击item2按钮的提交事件被拒绝,item1的模糊事件被调用。所以第一次被拒绝,用户必须按第二次按钮(这就是问题所在)。

那么如何知道在item1的模糊事件,如果用户点击item2,我可以继续触发item2的点击事件。

考虑以下代码

var $item1 = $('#item1');
var $item2 = $('#item2');
$item1.on('blur', function (oEvent) {
    if ($item2.is(oEvent.relatedTarget)) {
        // your blur is caused by click on $item2 a.k.a submit button
    } else {
        // your blur is caused by smth else
    }
});

它检查你的焦点被移动到哪里,你可以添加一些特定的布尔标志,稍后在你的提交处理程序中使用,或者可能以某种方式改变你的验证。

请注意,模糊事件是失去焦点的事件,焦点可能会因为点击而消失,也可能因为标签导航而消失。

更新:
添加了一个jsfiddle http://jsfiddle.net/DbjQc/尝试集中文本输入,然后点击其他地方。之后,再次尝试聚焦文本输入,然后单击提交按钮-您将看到行为如何变化。

最新更新