我正在开发一项允许编辑文本的服务。为了在此过程中帮助用户,我想允许用户将文本字段设置为覆盖模式,就像在 Word 等中一样。如何将 HTML 文本框的行为更改为覆盖而不是插入文本当用户输入时?
例如,如果文本框包含以下文本:
This is a trst.
用户可以在 r 和 t 之间单击,键入一个e
然后文本将是
This is a test.
将光标置于e
和s
。我目前正在使用 jQuery,因此首选使用 jQuery 或纯 javascript 的方法。不过,我会接受任何合理的解决方案。
这有点疯狂,但似乎确实有效:)
基于这个答案 and 这个答案这段代码就被创建了。
$("textarea").on("keypress", function(e) {
var key = String.fromCharCode(e.which || e.charCode || e.keyCode);
if (/[A-Za-z0-9 ]/.test(key)) {
var text = this.innerHTML;
var caret = getCaret(this);
var output = text.substring(0, caret);
this.innerHTML = output + key + text.substring(caret + 1);
setCaretPosition(this, caret + 1);
return false;
}
return true;
});
DEMO: http://jsfiddle.net/aHSzC/
它有效,但现在我没有时间修复我发现的一个小错误。
- If you press Backspace it seems to behave like a forward eraser.
无论如何,这是可以改进的代码。请随意编辑我的答案并做任何您喜欢的事情。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)