[英]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.