我有一个输入框,我想在它失去焦点时保存它的值。
非常简单的东西,我可以通过 jQuery 的 focusout
事件来完成。
然而,问题是当用户单击输入框旁边的“X”图标时,我不想触发 focusout
事件(示例如下所示)
因此,当用户跳出此输入框,或单击框外或单击绿色复选框时,它应该触发 focusout
事件……但是如果他们单击红色“X”,则不应触发 focusout
。
这可能与 JavaScript/jQuery 相关吗?
编辑:
你们中的一些人建议使用 event.relatedTarget
,但它似乎返回 null。为清楚起见,我将包括我的代码:
// This is the cancel button with the red X
$("body").on("click", "span[id*='Cancel']", function(e)
{
showLabel($(this));
});
// this is the code to trigger the blur / focusout event
// trouble is that the "e.relatedTarget" is null
$("body").on("focusout", "input, textarea", function (e) {
if($(e.relatedTarget).is("span[id*='Cancel']")){
return false;
}
$(this).siblings("span[id*='OK']").trigger("click");
return false;
});
这是我在 JS 中调试它的屏幕截图(你会看到
$(e.relatedTarget)
选择器什么都不返回):最佳答案
您可以取消将焦点返回到上一个元素的 de 事件。
$('#inputText').focusout(function(event) {
setTimeout(function(){
if (document.activeElement.id == "btnCancel") {
$(event.target).focus();
return false;
}
},1);
});
这个 jsFiddle 展示了如何做:https://jsfiddle.net/mpervh3t/
希望能帮助到你
关于javascript - 你能在失去焦点时阻止 jQuery focusout 触发吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39213861/