2013-05-19 87 views
4

无论我点击文档的哪个位置,我都想发起专注事件。然而,我使用了一个可排序的列表,每个可排序的项目都包含一个textarea,当点击可排序的项目时,焦点输出事件不会被触发。对于可拖动的项目也是如此。我创建了一个的jsfiddle来展示这个问题:jQuery专注不会在输入元素退出时触发

单击文本区域并试图蓝色矩形内的任何地方点击: 测试谷歌浏览器 http://jsfiddle.net/RWJhs/

是否有任何已知的解决方法?

的JavaScript:

$("textarea").focusout(function(){ 
    alert("Do something"); 
}); 

$("#draggable").draggable(); 

HTML:

<div id="draggable"> 
    <textarea></textarea> 
</div> 

回答

-1

这个工作对我来说: 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(); 
+0

修复该事件的内容的问题......但现在该项目不能拖动,所以它没有真正固定 – Jack

+0

我编辑了我的答案,纠正了这个问题 – Antoine

+0

是否可以在点击发生后立即触发事件,而不是在拖放事件之后触发事件? – Jack

0

你可以试试这个

$("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(); 
    } 
}); 

DEMO.

相关问题