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. マウスアップ
  3. クリック

鍵:

  1. キーダウン
  2. キープレス
  3. キーアップ

したがって、「クリック」ではイベントが完了したと見なし、「キープレス」では値をチェックしていましたが、「キーアップ」まで設定されませんでした。キー イベントとマウス イベントの順序が異なることにつまずきました。

これらの違いは正しく、考えてみれば当然のことです。キーを押し続けるとキーが繰り返されることを人々は期待しています。しかし、マウスを押したままにしておくと、ボタンを何度も押し続けるとは誰も期待していません。

于 2013-06-26T04:28:11.120 に答える