1

豊富なノックアウトベースのグリッドを備えたJQueryベース のシングルページWebアプリケーションがあります。

ノックアウトグリッドの行をダブルクリックすると、選択したアイテムの詳細を含むデータの仮想ページが読み込まれ、編集が完了すると(またはキャンセルした場合)、グリッドに戻ります。 。これはすべて、1つのページで行われます。

グリッド内の非テキスト領域をダブルクリックするか、フォームの入力フィールドにフォーカスを設定すると、グリッドが再表示されたときにすべてがうまく機能します。しかし、行のテキスト(行項目の「名前」など)をダブルクリックし、すぐに「キャンセル」をクリックしてグリッドに戻ると、グリッドのHTMLをすべて選択して再表示します。グリッドをクリックしてドラッグし、テキストの巨大な領域を選択したかのようです。

私はこの選択されたテキストをプログラムで選択解除しようとしましたが、役に立ちませんでした。私は次のさまざまな組み合わせを試しました:

$(document).focus();
$("#idBody").focus();
$("#idBody").trigger("click");

グリッドの外側の領域をクリックすると、希望する動作が得られます。私のオプションは何ですか?

4

1 に答える 1

2

ダブルクリック時の問題は、そのアクションブラウザをデフォルトで実行することにより、カーソルの下のテキストを選択し、選択されたテキストの範囲を作成することです。

実用的なフィドルの例

これは、選択したテキストのその範囲を削除することにより、過去に同じ問題を解決しました。

if (window.getSelection) {
  if (window.getSelection().empty) {  // Chrome
    window.getSelection().empty();
  } else if (window.getSelection().removeAllRanges) {  // Firefox
    window.getSelection().removeAllRanges();
  }
} else if (document.selection) {  // IE?
  document.selection.empty();
}

あなたはそれについて読むことができます:

MDNでのwindow.getSelectionおよびMDNでのDOM選択

MSDNのremoveAllRangesメソッドとMSDNHTMLSelectionオブジェクト


このソリューションの功績は、この回答Y氏にあります。


テスト済み

WindowsXPProfissionalversão2002ServicePack3

  • Internet Explorer 8.0.6001.18702
  • オペラ11.62
  • Firefox 3.6.16
  • Safari 5.1.2
  • Google Chrome 18.0.1025.168 m
  • K-Meleon 1.5.4

Windows 7 Home Edition Service Pack 1

  • Internet Explorer 9.0.8112.164211C
  • オペラ11.62
  • Firefox 12.0
  • Safari 5.1.4
  • Google Chrome 18.0.1025.168 m

Linux Ubuntu 12.04

  • Firefox 12.0
  • Chromium 18.0.1025.151(Developer Build 130497 Linux)
于 2012-06-05T22:45:10.067 に答える