更新
我发现真正的问题是输入值并不反映删除。
见这里: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();
}
答案 0 :(得分:0)
这似乎是鼠标事件和键盘事件的不同排序。他们开火如下:
的小鼠强> 的
的键:强> 的
所以在我的“点击”中我认为事件已经完成,而在“按键”中,我正在检查值,但直到“keyup”才设置。我被钥匙和鼠标事件中的不同顺序绊倒了。
这些差异是正确的,一旦你想到它们就有意义。人们期望按住一把钥匙重复按键,即使在“钥匙”之前,新闻也需要发生。但没有人希望按住鼠标会继续多次按下按钮。