1

更新

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

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

原帖

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

我该如何解决?

mousedown这是从DIV 上的事件触发的

var selection = window.getSelection();

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

1 回答 1

0

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

鼠:

  1. 鼠标按下
  2. mouseup
  3. 点击

钥匙:

  1. 按键
  2. 按键
  3. 键位

因此,在我的“点击”中,我认为事件已完成,而在“按键”中,我正在检查该值,但直到“keyup”才设置它。我被键和鼠标事件中的不同顺序绊倒了。

一旦您考虑它们,这些差异是正确的并且是有意义的。人们期望按住一个键会重复该键,甚至需要在“keyup”之前进行按下。但是没有人期望按住鼠标会继续多次按下按钮。

于 2013-06-26T04:28:11.120 回答