根据用户输入风格调用不同的事件 javascript

call different events based on user input style javascript

我有一个 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();
        }
    });

这不是一个非常巧妙的解决方案,但您可以在将项目添加到列表之前使用 setTimeout,并在 save.button 单击时清除 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