Javascript 停止因按键而触发模糊事件
当检测到事件“keydown”时,也会自动触发事件“blur”。如果触发“keydown”事件,如何防止元素上的“blur”事件? 以下是程序和代码: HTML: JavaScript:Javascript 停止因按键而触发模糊事件,javascript,jquery,Javascript,Jquery,当检测到事件“keydown”时,也会自动触发事件“blur”。如果触发“keydown”事件,如何防止元素上的“blur”事件? 以下是程序和代码: HTML: JavaScript: function saveOrDelete() { $("#ctrl").attr('contentEditable', false); alert('Triggered'); // alerts 2 times } $("#delegatee").on('keydown blur',
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
将升高
你必须重新思考你的逻辑
编辑(在您的评论之后):
由于上述原因,为了捕捉紧跟在按下键之后的模糊
,您可以更改逻辑,首先检查范围是否可编辑,然后根据该范围采取措施
e、 g
查看小提琴上的更新:是的,我理解,谢谢:)。我的问题是我怎样才能避免这种行为?
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)
}
var mode = $("#ctrl").prop('contentEditable');
if (mode == 'true') {
$("#ctrl").prop('contentEditable', false);
// your other processes here
} else {
return false;
}