jQuery专注不会在输入元素退出时触发
问题描述:
无论我点击文档的哪个位置,我都想发起专注事件。然而,我使用了一个可排序的列表,每个可排序的项目都包含一个textarea,当点击可排序的项目时,焦点输出事件不会被触发。对于可拖动的项目也是如此。我创建了一个的jsfiddle来展示这个问题:jQuery专注不会在输入元素退出时触发
单击文本区域并试图蓝色矩形内的任何地方点击: 测试谷歌浏览器 http://jsfiddle.net/RWJhs/
是否有任何已知的解决方法?
的JavaScript:
$("textarea").focusout(function(){
alert("Do something");
});
$("#draggable").draggable();
HTML:
<div id="draggable">
<textarea></textarea>
</div>
答
这个工作对我来说: http://jsfiddle.net/RWJhs/1/
$("textarea").focusout(function(){
alert("Do something");
});
$('#draggable not(textarea)').on('click');
$("#draggable").draggable();
编辑: 触发手动模糊事件似乎使其工作而不禁用draggi ñ 在这里看到:http://jsfiddle.net/RWJhs/6/
$("#draggable").on('click', function(e){
if (e.target == this && $('textarea').is(':focus')) $('textarea').blur();
});
$("textarea").blur(function(){
alert("Do something");
});
$("#draggable").draggable();
答
你可以试试这个
$("textarea").focusout(function(){
alert("Do something");
}).click(function(e){
e.stopPropagation();
return true;
});
$("#draggable").draggable({
start: function(event, ui) {
if($('textarea:focus', this).length){
$('textarea', this).focusout();
}
}
}).click(function(e){
if($('textarea:focus', this).length){
$('textarea', this).focusout();
}
});
修复该事件的内容的问题......但现在该项目不能拖动,所以它没有真正固定 – Jack
我编辑了我的答案,纠正了这个问题 – Antoine
是否可以在点击发生后立即触发事件,而不是在拖放事件之后触发事件? – Jack