11$ ( document ) . editable ( {
22 selector : '.editable' ,
3+ onblur : 'ignore' ,
34 params : function ( params ) {
45 var $field = $ ( this ) ;
56 var fieldName = $field . data ( 'name' ) ;
@@ -9,6 +10,39 @@ $(document).editable({
910 }
1011} ) ;
1112
13+ var hideEditableOnOutsideClickHandlers = [ ] ;
14+ var $editable = $ ( '.editable' ) ;
15+ $editable . on ( 'shown' , function ( e , editable ) {
16+ function hideEditableOnOutsideClick ( e ) {
17+ // ignore click event on body
18+ if ( e . target . tagName . toLowerCase ( ) === "body" ) {
19+ return ;
20+ }
21+
22+ // does editable popover contain the clicked element?
23+ var popover = editable . container . $form . parents ( '.editable-container' ) ;
24+
25+ // of not, hide the editable
26+ if ( ! $ . contains ( popover [ 0 ] , e . target ) ) {
27+ editable . hide ( ) ;
28+ }
29+ }
30+
31+ setTimeout ( function ( ) {
32+ document . addEventListener ( 'click' , hideEditableOnOutsideClick , true ) ;
33+ hideEditableOnOutsideClickHandlers . push ( hideEditableOnOutsideClick ) ;
34+ } , 0 ) ;
35+ } ) ;
36+
37+
38+ $editable . on ( 'hidden' , function ( e , editable ) {
39+ hideEditableOnOutsideClickHandlers . forEach ( function ( handler ) {
40+ document . removeEventListener ( 'click' , handler , true ) ;
41+ } ) ;
42+ hideEditableOnOutsideClickHandlers = [ ] ;
43+ } ) ;
44+
45+
1246//$(document).on('ready update', function (e) {
1347// var $target = $(e.target);
1448//});
0 commit comments