使用javascript(IE bug?)在文本区域插入新行

Insert a new line to textarea using javascript (IE bug ?)

本文关键字:文本 区域 插入 新行 javascript IE bug 使用      更新时间:2023-09-26

我正在尝试实现以下功能。我希望能够捕捉分号字符的击键,并在按下该键后将其更改为自动添加新行。在代码中,它看起来像这样:

var keyCode = e.keyCode ? e.keyCode : e.which;
if (keyCode == 59){
            e.preventDefault();     
            var tmpStyle = j$("#styleEditor").val();                
            tmpStyle += ";'n";
            j$("#styleEditor").val(tmpStyle);                               
}

所以,首先我捕捉这个键(通过"keypress"事件),然后我停止它的正常行为,最后我在文本区域内容的末尾添加分号和换行符。

现在,在FF和Chrome上一切都很好。然而,在IE 9上,它的行为真的很奇怪——它没有添加新行。。空白。然后,如果退格这个空白并再次键入";",它将按预期工作。您可以通过首先键入一些其他字符,然后键入分号来复制它。

我还注意到,删除e.preventDefault()会删除这个问题,尽管它会将两个分号粘贴到文本区域中。有人能帮我吗?

你可以在demo 上点击我的小演示

您可以删除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);

    }
}

小提琴:

http://jsfiddle.net/pmzzd56w/3/