javascript – event.preventDefault()只能运行一次

前端之家收集整理的这篇文章主要介绍了javascript – event.preventDefault()只能运行一次前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

当我第一次按下标签按钮时,它会起作用并且标签被阻止,但是如果我再次立即按下它,则不会阻止默认设置,并且我会从输入框中退出.

如果我输入内容然后选项卡然后键入其他内容然后选项卡,则默认情况下每次都会被阻止

问题是我不能连续两次选项卡.知道可能是什么问题吗?

 $("#functionSearch").on("change propertychange keyup",function( event ) {
    event.preventDefault();
    console.log(event)
    if (event.which == 9 ) {
        console.log("TAB")
    }else{
        clearHighlight();
        var input = $(this).val();
        if(input.length > 0){
            filteredArr = jQuery.grep(linksArr,function( val,index ) {
                return ( val.toLowerCase().indexOf(input.toLowerCase()) != -1);
            });
            selectElements(filteredArr);
        }
    }

});

// MAY BE USEFUL
function selectElements(filteredArr){
    $(filteredArr).each(function( index,link){
       var id = link.split("~")[1]
       $("#"+id).addClass("selected");
    });
    highlightFirstElement();
    }

    function highlightFirstElement(){
        $(".selected").first().addClass("highlighted");
    }

    function highlightNextElement(){
        $(".selected").next().addClass("highlighted");
    }

    function clearHighlight(){
        $(".highlighted").removeClass("highlighted");
        $(".selected").removeClass("selected");
    }

最佳答案
在触发keyup时,TAB键可能已经完成了将焦点移到另一个元素的工作,这意味着keyup事件将在另一个元素上触发,而不是在输入字段上触发.

最简单的解决方案是监听keydown而不是keyup(参见working fiddle).

猜你在找的jQuery相关文章