这有点疯狂,但它似乎以某种方式工作:)
基于this answer和this answer创建了这段代码。
$("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;
});
演示:http: //jsfiddle.net/aHSzC/
它有效,但现在我没有时间修复我发现的一个小错误。
- 如果您按下Backspace它,它的行为似乎就像一个向前的橡皮擦。
无论如何,这是可以改进的代码。随意编辑我的答案并做任何你喜欢的事情。