2012-12-29 47 views
0

我有两个事件的麻烦,他们工作正常,但我遇到了一个问题: 我有一个div内的div。当内部div处于焦点时,我想要将一组样式按钮添加到外部div。但是,当我尝试点击按钮时,它不重点内部div并使按钮消失。我想让他们在失去焦点时离开,但当我按下按钮时,我不希望焦点丢失。很抱歉,如果这是在这里有点混乱是一些代码,它在行动的jsfiddle:Javascript onblur/onfocus

function addButtons() { 
    var node = document.createElement('div'); 
    var obj = document.getElementById('container'); 
    node.setAttribute('id', 'buttons'); 
    node.innerHTML = '<input type="button" value="B" onClick="document.execCommand(\'bold\',false)" />'; 
    obj.appendChild(node); 
} 

function removeButtons(id) { 
    var obj = document.getElementById('container'); 
    obj.removeChild(obj.childNodes[3]); 
} 

http://jsfiddle.net/bnjGE/2/

如果我删除removeButtons()函数,它工作正常,但多个按钮将被创建。

我可以尝试清理一下,只是问。

三江源

+2

'模糊'在'click'之前触发,所以按钮消失,不会注册点击。需要使用不同的事件来删除按钮,如DIV的mouseleeave或 – charlietfl

回答

0

您可以在按钮上mousedown事件添加return false;声明,f.ex:

node.getElementsByTagName('input')[0].onmousedown = function(e) { 
    return false; 
}; 

http://jsfiddle.net/bnjGE/8/

+0

谢谢,作品就像我想要的 – tdub2012

0
document.onclick = function(e){ 
    console.log(e.target); 
    if(e.target.id != 'buttons' && e.target.parentNode.id != 'buttons' && e.target.id != 'textarea'){ 
     removeButtons(); 
    } 
}​ 

http://jsfiddle.net/bnjGE/7/ 也许这是一个解决方案,但并不完美。