jquery 根据JavaScript中的用户输入风格调用不同的事件

2cmtqfgy  于 2023-04-29  发布在  jQuery
关注(0)|答案(1)|浏览(88)

我有一个div,它包含一个输入元素来输入一些值。按Enter键或onFocusOut事件时,这些值作为列表元素添加到div的正上方。在这一点上它是罚款。但是如果用户输入某个值而不按回车键,直接单击保存按钮,则不应调用该divonFocusOut函数。相反,它应该接受该类型的值并调用某个save函数。你对如何检测它有什么建议吗?
我的代码片段在这里:
JS:

divInput.onkeypress = function (event){
                return someTestFunc();
    }
    
    
    divInput.tabIndex="-1";

    $(divInput).focusout(function (e) {
        if ($(this).find(e.relatedTarget).length == 0) {
            addToList();
        }
    });
kmynzznz

kmynzznz1#

这不是一个非常微妙的解决方案,但您可以在将项目添加到列表之前使用setTimeout,并在保存时清除setTimeout。点击按钮。试试这个:

var $saveButton = $('#exampleButton')[0],
    $divInput = $('#exampleInput')[0],
    timedEvent = -1;

$($saveButton).on('click', function(event){
    if(timedEvent) {
        clearTimeout(timedEvent)
    }
    alert('not add to list & save');
})

$divInput.tabIndex="-1";

$($divInput).on('focusout', function(e) {
    timedEvent = window.setTimeout(function() {
        if ($(this).find(e.relatedTarget).length == 0) {
            alert('add to list');
        }
    }, 200);
});

检查此working fiddle

相关问题