Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 模糊事件未在上触发-找不到处理隐藏模糊文本字段的解决方法_Javascript_Jquery_Html_Javascript Events_Blur - Fatal编程技术网

Javascript 模糊事件未在上触发-找不到处理隐藏模糊文本字段的解决方法

Javascript 模糊事件未在上触发-找不到处理隐藏模糊文本字段的解决方法,javascript,jquery,html,javascript-events,blur,Javascript,Jquery,Html,Javascript Events,Blur,TL;博士,我怎样才能让它起作用 发件人: 当元素通过定点设备或选项卡导航失去焦点时,会发生模糊事件。此事件对以下元素有效:标签、输入、选择、文本区域和按钮 HTML的基本思想是: 和JS: $form、label.onblur、function{ 你不会看到这个; }; 它不起作用。一个更具说明性的例子是 我还尝试了focusout,使用,但可能是因为它从输入中冒出气泡,所以它总是激发 我也许可以用这样的黑客来装备我所需要的东西:但我宁愿不这样做 编辑:有很多相关的问题,我已经阅读了所有我能找

TL;博士,我怎样才能让它起作用

发件人:

当元素通过定点设备或选项卡导航失去焦点时,会发生模糊事件。此事件对以下元素有效:标签、输入、选择、文本区域和按钮

HTML的基本思想是:

和JS:

$form、label.onblur、function{ 你不会看到这个; }; 它不起作用。一个更具说明性的例子是

我还尝试了focusout,使用,但可能是因为它从输入中冒出气泡,所以它总是激发

我也许可以用这样的黑客来装备我所需要的东西:但我宁愿不这样做

编辑:有很多相关的问题,我已经阅读了所有我能找到的,没有任何帮助。有些人谈到在表单或标签元素上设置tabindex=0。我尝试过各种排列方式,但都没有用。如果将其放在窗体上,则在窗体外部单击时会触发模糊事件。但是,它不适用于它的任何子项:如果您单击输入,然后单击表单外部,它将不会拾取任何内容

编辑2:到目前为止,我不太理解一些答案,似乎没有一个答案是真的。。。工作无论如何,为了澄清,以下是我试图实现的目标:

在我的应用程序中,您可以向文档添加标记。单击“添加标记”按钮时,会弹出一个以前隐藏的文本输入字段并将其聚焦。然后

单击外部的“模糊”应再次关闭文本输入字段 按enter键应添加标记并关闭输入字段 单击“添加标记”按钮还应添加标记并关闭输入字段 问题是1和3不兼容。“添加标记”按钮需要根据文本字段是打开还是关闭执行不同的操作,但由于文本字段上的onblur事件只能实现1,因此在“添加标记”按钮上执行任何操作3时,文本字段将关闭


下面是一个示例。

使用下面的代码来实现所需的

  $(document).on("blur", "label",function() {
       $("div").append("form or label blurred<br>");
   });

这是演示

试试这个,它应该可以工作

.focus {
border-color:red;
}


$(document).ready(function() {    

    $('input').blur(function(){
            $('input').removeClass("focus");
        })
             .focus(function() {        
                 $(this).addClass("focus")
        });

});

将这段js添加到您的小提琴中。您为标签添加了侦听器,但锚标记上会出现模糊

      $("form a").on("blur", function() {
              $("div").append("form or label blurred<br>");
       });

根据你的解释,我已经制作了一个演示

$("form > label >a").on("blur", function() {
      return false
});

    $("#outsideform > a").on("blur", function() {
    alert("but blur should fire when clicking here");
});

有一段时间,我发布了一个中间开发。但这肯定会帮你找到你应该找的地方。jquery实现,但不是javascript。 这才是真正的担忧

我在不同的地方添加了3行。没有大的变化

添加了一个对if可见的| |$input.cssvisibility==命令 条件 添加$input.cssvisibility,隐藏;到内部的其他条件 $input.cssvisibility,可见;到外部和最后一个else条件。 请注意这是中间的,您需要在提交非空文本后单击两次。 如果我有时间,我会发布正确的工作内容。 是小提琴。托贝克,你的小提琴快到了。问题在于此代码部分底部的选择器:

$("input").on("blur", function(){
    $("input").hide();
});
你在评论中正确地陈述了问题,你说:问题:我们永远不会进入这里,因为它已经被隐藏了,因为输入模糊了

把上面的部分改成这个,我想你会得到你想要的

$("input-blur label").on("blur", function(){
    $("input").hide();
});

因为“添加标签”链接位于标签内,所以单击它不会触发模糊功能

我想你要找的是

e、 停止传播

显示了一种不同的处理方式。。。它将隐藏在窗口单击上,这将使输入模糊,标签上除外,它将允许单击事件停止在标签内


快乐编码

您是否能够触发标签的焦点事件?我甚至不能那样做。旁注:这看起来不是使用标签的正确方式。通常是的,我也不能让它开火。我很确定你可以用两种方法中的一种来使用标签:要么用for属性指定标签的用途,要么把元素包装在标签的用途上。好吧,它似乎也可以用这种方式工作,但前提是我删除了a标签。很酷,这确实会使模糊从标签上触发,但它似乎也会错误地触发。尝试单击输入,然后单击第一个链接如何区分…-即使我们点击了标签,它仍然会开火,所以它不应该模糊。我想这把小提琴里有一些虫子。另外,无论我点击什么,我都无法显示警报。我相信这个代码是不正确的。但为了更简单的阅读,我编辑了这个姿势哈哈,我怎么会忘记停止播放。你完全明白了,谢谢!我想关键的洞察不是让事件在模糊上触发(这很难控制),而是让它在窗口单击时触发,这意味着您可以在任何需要的地方停止传播。