2017-02-12 17 views
0

私は一度だけフォーカスがトリガされた後mouseleaveをしたいです。どうやって? 私はoff、preventDefault、stopPropagation、return falseのようないくつかのオプションを試します。どれも働いていません。は一度だけ

ありがとうございます。フラグを設定し、そのフラグの基本に、あなたの関数を実行

addEvent(date, 'focus', function() { 
    console.log("focuz" + this.innerHTML); 
    document.designMode = 'on'; 

    addEvent(swap_date, 'mouseleave', function (e) { 
     console.log("mouseleave" + this.innerHTML); 
     //document.designMode = 'on'; 
     $(this).off(e); 
     e.preventDefault(); 
     e.stopPropagation(); 
     return false; 
    }); 
}); 
+3

あなたは[.one()](http://api.jquery.com/one/)について知っていますか? –

答えて

0

はストップVARとチェックをトリガするためにMouseEnterイベントに固定し、この

var isFocussed = false; 
addEvent(date, 'focus', function() { 
    isFocussed = true; 
    console.log("focuz" + this.innerHTML); 
    document.designMode = 'on'; 

    addEvent(swap_date, 'mouseleave', function (e) { 

     console.log("mouseleave" + this.innerHTML); 
     if(isFocussed){ 
     //document.designMode = 'on'; 
     $(this).off(e); 
     e.preventDefault(); 
     e.stopPropagation(); 
     isFocussed = false; 
     return false; 
     } 
    }); 
}); 
}); 
+0

did not work m8。私は一度だけフォーカスを持っていますが、私はいつもセルから出ています(テーブルtd).../ –

+0

問題のあるフィドルを投稿してください –

0

を試してみてください。 マウスが離れると停止します。

addEvent(swap_date, 'mouseenter', function() { 
stop = false; 
}); 

addEvent(swap_date, 'focus', function() { 
document.designMode = 'on'; 

if (this.innerHTML != "") { 
    $(document).ready(function() { 
     $('.swapDate').bind('mouseleave', function (event) { 
      if (!stop && this.innerHTML != "") 
      checkDate(this.innerHTML); 
      stop = true; 
      $('.swapDate').unbind('mouseleave'); 
     }); 


    }); 
} 
});