Javascript 模糊事件未在上触发-找不到处理隐藏模糊文本字段的解决方法
TL;博士,我怎样才能让它起作用 发件人: 当元素通过定点设备或选项卡导航失去焦点时,会发生模糊事件。此事件对以下元素有效:标签、输入、选择、文本区域和按钮 HTML的基本思想是: 和JS: $form、label.onblur、function{ 你不会看到这个; }; 它不起作用。一个更具说明性的例子是 我还尝试了focusout,使用,但可能是因为它从输入中冒出气泡,所以它总是激发 我也许可以用这样的黑客来装备我所需要的东西:但我宁愿不这样做 编辑:有很多相关的问题,我已经阅读了所有我能找到的,没有任何帮助。有些人谈到在表单或标签元素上设置tabindex=0。我尝试过各种排列方式,但都没有用。如果将其放在窗体上,则在窗体外部单击时会触发模糊事件。但是,它不适用于它的任何子项:如果您单击输入,然后单击表单外部,它将不会拾取任何内容 编辑2:到目前为止,我不太理解一些答案,似乎没有一个答案是真的。。。工作无论如何,为了澄清,以下是我试图实现的目标: 在我的应用程序中,您可以向文档添加标记。单击“添加标记”按钮时,会弹出一个以前隐藏的文本输入字段并将其聚焦。然后 单击外部的“模糊”应再次关闭文本输入字段 按enter键应添加标记并关闭输入字段 单击“添加标记”按钮还应添加标记并关闭输入字段 问题是1和3不兼容。“添加标记”按钮需要根据文本字段是打开还是关闭执行不同的操作,但由于文本字段上的onblur事件只能实现1,因此在“添加标记”按钮上执行任何操作3时,文本字段将关闭Javascript 模糊事件未在上触发-找不到处理隐藏模糊文本字段的解决方法,javascript,jquery,html,javascript-events,blur,Javascript,Jquery,Html,Javascript Events,Blur,TL;博士,我怎样才能让它起作用 发件人: 当元素通过定点设备或选项卡导航失去焦点时,会发生模糊事件。此事件对以下元素有效:标签、输入、选择、文本区域和按钮 HTML的基本思想是: 和JS: $form、label.onblur、function{ 你不会看到这个; }; 它不起作用。一个更具说明性的例子是 我还尝试了focusout,使用,但可能是因为它从输入中冒出气泡,所以它总是激发 我也许可以用这样的黑客来装备我所需要的东西:但我宁愿不这样做 编辑:有很多相关的问题,我已经阅读了所有我能找
下面是一个示例。使用下面的代码来实现所需的
$(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标签。很酷,这确实会使模糊从标签上触发,但它似乎也会错误地触发。尝试单击输入,然后单击第一个链接如何区分…-即使我们点击了标签,它仍然会开火,所以它不应该模糊。我想这把小提琴里有一些虫子。另外,无论我点击什么,我都无法显示警报。我相信这个代码是不正确的。但为了更简单的阅读,我编辑了这个姿势哈哈,我怎么会忘记停止播放。你完全明白了,谢谢!我想关键的洞察不是让事件在模糊上触发(这很难控制),而是让它在窗口单击时触发,这意味着您可以在任何需要的地方停止传播。