Javascript onblur / onfocus

时间:2012-12-29 03:00:47

标签: javascript

我在这两个事件上遇到了一些麻烦,它们工作正常但是我遇到了一个问题: 我在div里面有一个div。当内部div处于焦点时,我希望将一组样式按钮附加到外部div。但是,当我尝试单击按钮时,它会取消内部div并使按钮消失。当焦点丢失时我希望它们消失,但是当我按下按钮时我不希望焦点丢失。对不起,如果这有点令人困惑,这里有一些代码和一个jsfiddle的实际操作:

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 个答案:

答案 0 :(得分:0)

您可以在按钮上的return false;事件中添加mousedown语句,f.ex:

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

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

答案 1 :(得分: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/ 也许这是一个解决方案,但并不完美。