按回车键时,在光标位置添加换行符



我有一个文本区(id = details)的表单。

是否有一种方法可以在光标位置插入换行符(<br />)当在此文本区域内按Enter键时?

我只需要这个在IE中工作。

<textarea class="input height120 elastic span12" name="details" id="details" onkeyup="countCharLimit(event)" onpaste="countCharLimit(event)"></textarea>

试试这个:

$('textarea').keypress(function (e){
    if(e.keyCode == 13){
        $('textarea').val($('textarea').val()+"<br />");
    }
});

你可以试着在这里修改

编辑:我意识到这只是在最后添加一个<br />,经过更多的研究,我发现了这个解决方案:

$('textarea').keypress(function (e){
    if(e.keyCode == 13){
        e.preventDefault();
        this.value = this.value.substring(0, this.selectionStart)+"<br />"+"n";
    }
});

这里有一个小提琴

源代码(大部分):使用jQuery在textarea中插入文本

EDIT AGAIN:看起来OP希望最后的文本也被清除,所以我相应地更新了我的代码(对于其他人看到这一点:查看我相关的第一次编辑,以便您想要保留剩余的文本)。

你需要先找到插入符号的位置,如下所示:

    var caretPos = function() {
        var el = $("#details").get(0);
        var pos = 0;
        if('selectionStart' in el) {
            pos = el.selectionStart;
        } else if('selection' in document) {
            el.focus();
            var Sel = document.selection.createRange();
            var SelLength = document.selection.createRange().text.length;
            Sel.moveStart('character', -el.value.length);
            pos = Sel.text.length - SelLength;
        }
        return pos;
    }

取自:here

那么你做:

var textofDetails = $("#details").val();
jQuery("#detail").val(textofDetails.substring(0, caretPos) + "<br/>" + textofDetails.substring(caretPos) );

主要编辑:

不需要以上所有内容;您的函数将是

function replaceNewLine(){
    jQuery("#detail").val().replace(/\n/g, "<br />");
}

当然可以。似乎是这样,您需要keydown事件处理和(可能的)setTimeout 0 hack,看看这里:为什么setTimeout(fn, 0)有时很有用?

最新更新