停止由于按键触发模糊事件
当检测到事件’keydown’时,也会自动触发事件’blur’。 如果触发’keydown’事件,如何防止元素上的’blur’事件? 这是jsFiddle和代码:HTML:
CSS:
#ctrl { width:100px; height:50x; border:1px solid black; display:inline-block; }
JavaScript的:
function saveOrDelete() { $("#ctrl").attr('contentEditable', false); alert('Triggered'); // alerts 2 times } $("#delegatee").on('keydown blur', '#ctrl', saveOrDelete)
请注意,此解决方案不起作用:
function saveOrDelete() { $("#delegatee").off('keydown blur', '#ctrl', saveOrDelete) $("#ctrl").attr('contentEditable', false); alert('Trigger'); $("#delegatee").on('keydown blur', '#ctrl', saveOrDelete) }
此行导致此行为:
$("#ctrl").attr('contentEditable', false);
一旦跨度不再是contentEditable
,它将失去焦点,因此blur
被提升。
你将不得不重新思考你的逻辑。
编辑(评论后):
为了捕获由于上述原因而紧跟在keydown
的blur
,您可以更改逻辑以首先检查范围是否可编辑,然后根据该操作采取操作。
例如
var mode = $("#ctrl").prop('contentEditable'); if (mode == 'true') { $("#ctrl").prop('contentEditable', false); // your other processes here } else { return false; }
检查小提琴上的更新: http : //jsfiddle.net/CxFaq/1/