2013-05-19 67 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.

相關問題