我有一个输入框,我想在它失去焦点时保存它的值。

非常简单的东西,我可以通过 jQuery 的 focusout 事件来完成。

然而,问题是当用户单击输入框旁边的“X”图标时,我不想触发 focusout 事件(示例如下所示)

javascript - 你能在失去焦点时阻止 jQuery focusout 触发吗?-LMLPHP

因此,当用户跳出此输入框,或单击框外或单击绿色复选框时,它应该触发 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) 选择器什么都不返回):

javascript - 你能在失去焦点时阻止 jQuery focusout 触发吗?-LMLPHP

最佳答案

您可以取消将焦点返回到上一个元素的 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/

10-12 06:33