【问题标题】:How to programmatically start/stop editing a contenteditable?如何以编程方式开始/停止编辑 contenteditable?
【发布时间】:2014-02-16 02:56:39
【问题描述】:

我需要触发什么样的事件才能以编程方式开始或停止实际编辑 contenteditable,例如当用户聚焦或模糊它时?我尝试了 .focus()、.click()、setting the selection to its content,但它们似乎都不起作用。

编辑:.focus() 确实有效,只需确保 contenteditable 节点已插入到文档中...

【问题讨论】:

  • 你的意思是切换 contenteditable 属性?
  • 不,它已经是 contenteditable。
  • keyup, keydown, keypress?
  • “开始”或“停止”编辑元素是什么意思?用户是开始或停止编辑的人。当他们这样做时,您是否正在寻找要触发的事件?
  • 当用户点击 contenteditable 时,会出现一个插入符号并响应编辑键盘事件。我想从 JavaScript 激活这个“编辑模式”。

标签: javascript jquery contenteditable


【解决方案1】:

也许您正在寻找 disabledreadonly 属性。

HTML:
<input type="text" disabled="disabled" />

Javascript:
document.getElementsByTagName("div")[0].setAttribute("disabled", "disabled");

其他选项是

HTML:
<input type="text" readonly="readonly" />

Javascript:
document.getElementsByTagName("div")[0].setAttribute("readonly", "readonly");

【讨论】:

    【解决方案2】:

    您可以在 jQuery 中使用trigger() 方法:

    $('div[contenteditable="true"]').trigger('focus');
    

    根据jsFIddle demo,这将导致插入符号出现在页面加载中。

    【讨论】:

    • 该死!虽然我尝试了这个,但它不起作用,因为当我调用 .focus() 时,contenteditable DOM 节点没有插入到 DOM 树中。我的错。
    猜你喜欢
    • 2021-01-20
    • 2011-10-31
    • 1970-01-01
    • 2021-04-22
    • 2011-04-20
    • 2013-11-18
    • 1970-01-01
    • 2011-05-07
    • 1970-01-01
    相关资源
    最近更新 更多