我正在尝试实现以下功能。我希望能够捕获分号字符的键击并将其更改为在按下此键后自动添加新行。在代码中它看起来像这样:
var keyCode = e.keyCode ? e.keyCode : e.which;
if (keyCode == 59){
e.preventDefault();
var tmpStyle = j$("#styleEditor").val();
tmpStyle += ";\n";
j$("#styleEditor").val(tmpStyle);
}
所以,首先我抓住这个键(带有“按键”事件),然后我就停止了它的正常行为,最后我在textarea内容的末尾添加了分号和换行符。
现在,在FF,Chrome上一切正常。然而在IE 9上它表现得非常奇怪 - 而不是添加新行它增加了..空格。然后,如果退格这个空格并输入“;”再次按预期工作。您可以通过首先键入其他字符然后键入分号来重现它。
我还注意到删除e.preventDefault()会删除此问题,尽管它会将两个分号粘贴到textarea中。有人可以帮我吗?
您可以在DEMO
上查看我的小型演示答案 0 :(得分:0)
您可以删除e.preventDefault()
并使用事件keyup
代替keypress
。
function checkForSemicolons(e) {
var style = j$("#styleEditor").value;
var keyCode = e.keyCode ? e.keyCode : e.which;
if (keyCode == 59) {
//e.preventDefault();
var tmpStyle = j$("#styleEditor").val();
tmpStyle += "\n";
j$("#styleEditor").val(tmpStyle);
}
}
小提琴: