【问题标题】:JQuery button click causes focus loss on highlighted text in editable divJQuery 按钮单击导致可编辑 div 中突出显示的文本失去焦点
【发布时间】:2019-05-27 04:26:46
【问题描述】:

我有一个可编辑的 div,我正在尝试使用按钮/锚来格式化文本以触发 JQuery 操作。问题是如果我在可编辑的 div 中有一个选定的文本,然后如果我点击 #bold 按钮使其粗体。文本失去焦点,没有任何反应。

HTML

<div class="poster">
    <div class="editor" contenteditable="true" placeholder="What's on your mind?"></div>

    <div class="posterButtons preventCollapse">
        <div class="pull-left">
            <a id="bold">B</a>
            <a id="italic">I</a>
            <a id="underline">U</a>
        </div>
        <div class="pull-right">
            <a class="submitPost">Post</a>
        </div>
    </div>
</div>

jQuery

$('#bold').click(function(){
    document.execCommand('bold', false);
});

【问题讨论】:

  • 记住最后一次选择模糊
  • &lt;button type="button" id="bold"&gt;B&lt;/button&gt;
  • @Mohamed-Yousef 将其作为答案发布。有用!并请解释它为什么起作用

标签: javascript jquery html


【解决方案1】:

您可以使用&lt;button&gt; 代替&lt;a&gt;

$('#bold').click(function(){
    document.execCommand('bold', false);
});
.editor {

    height: 100px;
    border: 1px solid #ddd;
    padding: 10px;
    outline: none;

}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div class="poster">
    <div class="editor" contenteditable="true" placeholder="What's on your mind?"></div>

    <div class="posterButtons preventCollapse">
        <div class="pull-left">
            <button type="button" id="bold">B</button>
            <button type="button" id="italic">I</button>
            <button type="button" id="underline">U</button>
        </div>
        <div class="pull-right">
            <a class="submitPost">Post</a>
        </div>
    </div>
</div>

你可以阅读Why getting a text selection from textarea works when a button clicked but not when a "div" clicked (in Internet Explorer)

【讨论】:

  • 请您解释一下为什么按钮有效而锚点无效?
  • @Feelsbadman 我添加了一个链接来解释使用button 的想法。老实说,它不能很好地解释这个概念..但这就是我所拥有的......祝你有美好的一天:- )
【解决方案2】:

请使用&lt;button type="button" id="bold"&gt;B&lt;/button&gt; 而不是&lt;a id="bold"&gt;B&lt;/a&gt;。如果您必须重定向或类似的东西,请仅使用 &lt;a&gt; 标签。

另外,如果您使用按钮作为提交按钮,请尝试使用&lt;button type="submit" id="bold"&gt;B&lt;/button&gt;。区别在于button type 只是一个按钮或提交按钮。

【讨论】:

  • 如果您能解释按钮与锚点的行为,那就太好了。这可以解释为什么按钮 有效 而锚点无效。
  • @Feelsbadman 基本上是锚标记&lt;a&gt; 元素表示指向目标页面或页面内部分的超链接。无论`
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-18
  • 1970-01-01
  • 1970-01-01
  • 2010-11-29
  • 2022-06-11
相关资源
最近更新 更多