2016-01-19 73 views
2

外面的手柄模糊事件我有一个包含一个孩子箱输入type=number“父DIV”。当用户在输入框外单击时,我使用父div的blurfocusout事件在其他某处使用输入值。由焦点子元素上触发父元素,并通过点击子

我还需要在某个地方使用$('inputbox').trigger('focus'),这会不必要地激发“父div”的模糊事件并在该事件上运行代码。

请给出一个解决方案,停止对孩子的关注这个父模糊事件,或给一个方法来找到焦点是否由子元件上,或者由用户点击父DIV外触发(“专注”)制成。

只有当用户在其外部点击时,我需要触发父级模糊&而不是在通过代码触发焦点时。

+1

你能分享一个小提琴http://jsfiddle.net? – gurvinder372

+0

请看最终答案。 –

回答

2

与jQuery你可以自定义事件很容易,像:

$('inputbox').trigger('special-focus'); 

那么你可以等待该事件就像任何其他事件:

$('div').on('special-focus' , function(){ ... }); 

这将防止您的活动干涉内置的。

我想如果你不想使用建议则为此在您单击处理或孩子你的注意力处理器

.on('focus' , function(e){ 
    e.stopPropagation(); 
    e.preventDefault(); 
    /// the rest of your code ... 
}); 

这将事件的传播停止父元素

+0

谢谢,但仍然如果我不得不使用.focus()专注于输入框,它是父母的射击模糊。 –

+0

编辑答案,又增加了解决方案,为你工作 –

+0

可以附加到Click事件,您可能一半用在那里赶上事件发挥。 –

0

.on('blur',...)父母火灾之前.on('focus' ,...)的孩子。
反正含子输入框 父DIV,我们可以使用
$('input').trigger('special-focus');
然后

$("#form").on('special-focus', '.parentdiv' , function(event) { 
      $("#form").off('blur', '.parentdiv'); 
      $(event.target).focus(); 
      $("#form").on('blur', '.parentdiv' , showValuesOnBlur); 
    }); 


现在模糊母公司将不会触发对孩子的焦点。
这对我有用。即关闭特殊焦点内父模糊事件的&。
感谢Scott Selby :)

+0

如果你不打算来选择我的答案是正确的答案,那么你可能要考虑供应商的你没有得到这个代码的工作是什么一个完整的答案。别人访问此页不会unserstand只是在一个自定义事件有投掷,而不是显示它是如何触发 –

+0

。对(“专注”,函数(E){即stopPropagation();等不会在这里作为家长模糊火第一..也工作代码包含模糊事件 这是为什么我没有标记你的答案corrent队友,但它仍然是有用的建议自定义事件you.Had我标记此正确的,开发人员会继续尝试e.stopPropagation();这在这里不起作用。 –

+0

我明白了,这很好,我只是想写一个完整的答案,而我并没有告诉你你必须要么,我不是Stackoverflow老板,我只是说你应该考虑。通过完成我并不是说我的意思是正确的我只是想填写你遗漏的部分 –

1

对我来说,有效的方法是检查处理函数中eventObject对象的relatedTarget属性。

$("#parentDiv").focusout(function (eventObject) { 
    if (eventObject.relatedTarget.id === "childInputId") 
     /// childInput is getting focus 
    else 
     /// childInput is not getting focus 
}); 
相关问题