Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 停止因按键而触发模糊事件_Javascript_Jquery - Fatal编程技术网

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',

当检测到事件“keydown”时,也会自动触发事件“blur”。如果触发“keydown”事件,如何防止元素上的“blur”事件? 以下是程序和代码: HTML:

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
将升高

你必须重新思考你的逻辑

编辑(在您的评论之后):

由于上述原因,为了捕捉紧跟在按下键之后的
模糊
,您可以更改逻辑,首先检查范围是否可编辑,然后根据该范围采取措施

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;
}