我正在尝试在contenteditable
div中的输入框中插入文本。当我单击输入框时,光标不会出现。双击输入框后我可以插入文本。在IE中会出现此问题。
<div contenteditable="true">
<input type="text">
</div>
https://jsfiddle.net/spgkpgdy/
感谢。
答案 0 :(得分:2)
你好,你可以试试这样的希望它适合你
function controlselectHandler(evt) {
evt.preventDefault();
}
document.body.addEventListener('mscontrolselect', controlselectHandler);
$('#abc').on('click','input[type="text"]',function(e){
$(this).focus();
})
我对此做了一些研究,我想出了解决方案,希望它有所帮助。
答案 1 :(得分:1)
contenteditable=true
。 两者都是(Microsoft)HTML文档元素的预期行为。
<div id="ctrl" contenteditable="true">
<input type="text" />
</div>
<div id="buttonGroup">
<span>This affects to MSIE only</span>
<button onclick="document.getElementById('ctrl').contentEditable='false'">Disable editable</button>
<button onclick="document.getElementById('ctrl').contentEditable='true'">Enable editable</button>
</div>
&#13;
更新1:
如果你不能删除属性并希望在div周围保持调整大小的抓手,你可以监听外部div的onfocus事件并将焦点设置为内部输入控件。
var divElem = document.querySelector("div[contenteditable='true']");
divElem.onfocus = function() {
divElem.querySelector('input').focus();
}
答案 2 :(得分:1)
这个问题似乎发生了,因为当您点击它时,IE允许您围绕可疑的div
移动输入,并且需要双击才能编辑其内容。
一种可能的解决方案是通过使输入焦点onmousedown
来覆盖IE的行为。这很简单:
document.querySelector("div[contenteditable='true'] input").onmousedown = function() {
this.focus();
}
&#13;
<div contenteditable="true">
<input type="text" />
</div>
&#13;
你可以在这个JSFiddle上看到这个JS解决方案和一个jQuery版本:http://jsfiddle.net/yuzs9rz4/4/