jQuery focusout在输出元素退出时不触发

时间:2013-05-19 03:41:12

标签: javascript jquery

无论我在哪里点击文档,我都想发布焦点事件。但是,我使用的是可排序列表,其中每个可排序项目都包含textarea,单击可排序项目时不会触发focusout事件。可拖动项目也是如此。我创建了一个jsfiddle来展示这个问题:

单击textarea并尝试单击蓝色矩形内的任意位置: 在Google Chrome中测试 http://jsfiddle.net/RWJhs/

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

JavaScript的:

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

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

HTML:

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

2 个答案:

答案 0 :(得分: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.

答案 1 :(得分:-1)

这对我有用: http://jsfiddle.net/RWJhs/1/

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

$('#draggable not(textarea)').on('click');
$("#draggable").draggable();

编辑: 手动触发模糊事件似乎可以在不禁用拖动的情况下使其工作 见这里: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();