在Chrome中的输入上使用“deleteFromDocument”后,输入的值不会更新

时间:2013-06-25 19:25:22

标签: javascript html5 google-chrome firefox dom

更新

我发现真正的问题是输入值并不反映删除

见这里:http://jsfiddle.net/BKj22/2/

原帖

我有一个包含文本的输入元素,我突出显示了其中的一些文本。 selection.rangeCount显示为1,因此会看到选择。我也可以打印出选择并正确打印(例如,如果我选择了"this",那么它会在selection.toString()中)。但是deleteFromDocument什么也没做,它说它已经崩溃了。

我该如何解决这个问题?

这是来自DIV上的mousedown事件

var selection = window.getSelection();

//Try to delete from selection
if ( selection.rangeCount > 0 )
{
    console.log( selection.toString() );
    selection.deleteFromDocument();
    selection.removeAllRanges();
}

1 个答案:

答案 0 :(得分:0)

这似乎是鼠标事件和键盘事件的不同排序。他们开火如下:

小鼠

  1. 鼠标按下
  2. 鼠标松开
  3. 点击
  4. 键:

    1. KEYDOWN
    2. 按键
    3. KEYUP
    4. 所以在我的“点击”中我认为事件已经完成,而在“按键”中,我正在检查值,但直到“keyup”才设置。我被钥匙和鼠标事件中的不同顺序绊倒了。

      这些差异是正确的,一旦你想到它们就有意义。人们期望按住一把钥匙重复按键,即使在“钥匙”之前,新闻也需要发生。但没有人希望按住鼠标会继续多次按下按钮。