簡體   English   中英

jQuery keydown事件不適用於contenteditable div

[英]jquery keydown event doesn't work for contenteditable div

我有一個具有子div的contenteditable = true的div。 我正在嘗試將keydown事件附加到子div之一以清除默認文本。 但是,我無法使keydown事件正常工作。 點擊事件可以正常運行,因此我不確定自己缺少什么。

首先,我嘗試着重於將contenteditable設置為true的外部div。

var $editableDiv = $("#ID");
$editableDiv.focus();

然后,我想將光標移到要他們鍵入的div上。

var focusDiv = $editableDiv.children("div").children("div")[0];
var sel = window.getSelection();
var range = document.createRange();
range.setStart(focusDiv, 0);
range.collapse(true);
sel.removeAllRanges();
sel.addRange(range);

現在,我嘗試附加keydown事件:

$(focusDiv).on("keydown", function (e)
{
  var $target = $(e.target);
  if ($target.text() === "Enter comment here")
  {
    $target.text("");
  }
}

但這永遠不會隨着keydown事件觸發。 如果將其更改為click事件並單擊它,它將觸發。 它與keydown不適用於內容可編輯的標簽有關嗎? 閱讀jQuery手冊:

當用戶首次按下鍵盤上的鍵時,keydown事件將發送到元素。 它可以附加到任何元素,但是事件僅發送到具有焦點的元素。 在瀏覽器之間,可聚焦元素可以有所不同,但是表單元素可以始終獲得焦點,因此是此事件類型的合理候選對象。

div不能真正“集中精力”會不會有問題? 也許我給它一個tabIndex?

問題是我正在集中精力。 我將焦點應用於父div,然后將光標移至其中一個孩子,並嘗試將keydown事件應用於該孩子。 一旦將其應用於父項,它就會起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM