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

时间:2014-05-05 11:29:39

标签: javascript jquery

我有两个项目

item1 是文本框

item2 是提交按钮

现在 item1 在jquery中有模糊事件。在那个模糊事件中,我已经验证并基于该验证,如果失败,用户将有确认消息。

因此,如果用户按是,他可以继续进行

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

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

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

1 个答案:

答案 0 :(得分:3)

考虑这段代码

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/ 尝试聚焦文本输入,然后单击其他位置。之后尝试再次聚焦文本输入,然后单击提交按钮 - 您将看到行为如何变化。