4

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

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

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

JavaScript:

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

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

HTML:

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

2 回答 2

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

演示。

于 2013-05-19T04:36:36.953 回答
-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();
于 2013-05-19T03:48:51.983 回答