HTML contenteditable 在标签进入时有效,但在点击进入时无效
HTML contenteditable works when tabbed into but not when clicked into
我想要 span
内容可编辑,所以我已将 contentEditable ="true"
属性添加到 span 元素,但只有当我使用键盘进入字段时它才可编辑,但如果我用鼠标光标单击不可编辑的文本。我认为可能有一些事件监听器在做一些奇怪的事情,所以我做了一个令人讨厌的 hack 来覆盖 onclick 和 onfocus 事件,不做任何事情并且不传播到祖先事件监听器
<span
onclick="javascript:return false;"
onfocus="javascript:return false;"
contentEditable ="true">Edit Me</span>
例如,标题 Gold Coast Waters 3 Day Forecast
不起作用,应该可以在以下页面上进行编辑:
Non-Working Example
下面 contenteditable
的 fiddle 有效,所以我的代码中有些东西阻止了它的工作,我似乎无法缩小它的范围。
// find elements
var banner = $("#banner-message")
var button = $("button")
// handle click and add class
button.on("click", function(){
banner.addClass("alt")
})
body {
background: #20262E;
padding: 20px;
font-family: Helvetica;
}
#banner-message {
background: #fff;
border-radius: 4px;
padding: 20px;
font-size: 25px;
text-align: center;
transition: all 0.2s;
margin: 0 auto;
width: 300px;
}
button {
background: #0084ff;
border: none;
border-radius: 5px;
padding: 8px 14px;
font-size: 15px;
color: #fff;
}
#banner-message.alt {
background: #0084ff;
color: #fff;
margin-top: 40px;
width: 200px;
}
#banner-message.alt button {
background: #fff;
color: #000;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="banner-message">
<span contenteditable="true">Hello World</span>
<button>Change color</button>
</div>
关于当我点击 span
时阻止编辑的任何想法?
所以事实证明 $(".sortable").disableSelection()
有点令人讨厌,它会阻止带有 contenteditable="true"
的元素被编辑。我从我的代码中删除了该行,元素现在可以编辑了。
此外,jQuery 不鼓励使用该函数:http://api.jqueryui.com/disableselection/
我想要 span
内容可编辑,所以我已将 contentEditable ="true"
属性添加到 span 元素,但只有当我使用键盘进入字段时它才可编辑,但如果我用鼠标光标单击不可编辑的文本。我认为可能有一些事件监听器在做一些奇怪的事情,所以我做了一个令人讨厌的 hack 来覆盖 onclick 和 onfocus 事件,不做任何事情并且不传播到祖先事件监听器
<span
onclick="javascript:return false;"
onfocus="javascript:return false;"
contentEditable ="true">Edit Me</span>
例如,标题 Gold Coast Waters 3 Day Forecast
不起作用,应该可以在以下页面上进行编辑:
Non-Working Example
下面 contenteditable
的 fiddle 有效,所以我的代码中有些东西阻止了它的工作,我似乎无法缩小它的范围。
// find elements
var banner = $("#banner-message")
var button = $("button")
// handle click and add class
button.on("click", function(){
banner.addClass("alt")
})
body {
background: #20262E;
padding: 20px;
font-family: Helvetica;
}
#banner-message {
background: #fff;
border-radius: 4px;
padding: 20px;
font-size: 25px;
text-align: center;
transition: all 0.2s;
margin: 0 auto;
width: 300px;
}
button {
background: #0084ff;
border: none;
border-radius: 5px;
padding: 8px 14px;
font-size: 15px;
color: #fff;
}
#banner-message.alt {
background: #0084ff;
color: #fff;
margin-top: 40px;
width: 200px;
}
#banner-message.alt button {
background: #fff;
color: #000;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="banner-message">
<span contenteditable="true">Hello World</span>
<button>Change color</button>
</div>
关于当我点击 span
时阻止编辑的任何想法?
所以事实证明 $(".sortable").disableSelection()
有点令人讨厌,它会阻止带有 contenteditable="true"
的元素被编辑。我从我的代码中删除了该行,元素现在可以编辑了。
此外,jQuery 不鼓励使用该函数:http://api.jqueryui.com/disableselection/