为什么我的输入标签在获得后会立即失去焦点?

时间:2015-08-04 12:49:49

标签: javascript html

通过设计,当输入获得焦点时,应该禁用菜单容器onblur事件,并且当输入失去焦点时(即当用户完成输入时)应该启用它。

function pauseHiding(hiderId) {
    var hider = document.getElementById(hiderId);
    hider.onblur = null;
}

function resumeHiding(hiderId, timeout) {
    var hider = document.getElementById(hiderId);
    hider.onblur = "setTimeout(function(){hideMenu(hiderId);}, timeout);";
    hider.focus();
}

事实上,输入的onfocus事件正常触发,但紧接着就是onblur事件。此外,onfocus会删除菜单容器的onblur事件,但输入的onblur不会将其返回。 https://jsfiddle.net/2dxre6nz/4/

1 个答案:

答案 0 :(得分:1)

showMenu()功能中,您必须删除focus()使用

function showMenu(containerId) {
    var el = document.getElementById(containerId);
    var setVisible = function(element){
        if (element.tagName == 'A') element.style.display = 'inline';
        else
            if (element.tagName != 'SCRIPT' && element.tagName != 'STYLE') element.style.display = 'block';
        };
    iterateChildren(el, setVisible);
        //el.focus();
}

您在主div中设置了onclick="showMenu('userbody')",因此每次点击都会改变您的注意力