首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过JavaScript添加后,在从文本区域读取时保留选项卡

通过JavaScript添加后,在从文本区域读取时保留选项卡
EN

Stack Overflow用户
提问于 2012-12-03 20:40:19
回答 1查看 759关注 0票数 0

在读取文本区域的值时,我遇到了保留制表符的问题。我按如下方式添加了选项卡:

代码语言:javascript
复制
$("#code-editor").keydown(function (e) {
    if (e.keyCode === 9) { // tab was pressed
        // get caret position/selection
        var start = this.selectionStart;
        var end = this.selectionEnd;

        var $this = $(this);
        var value = $this.val();

        // set textarea value to: text before caret + tab + text after caret
        $this.val(value.substring(0, start)
                    + "\t"
                    + value.substring(end));

        // put caret at right position again (add one for the tab)
        this.selectionStart = this.selectionEnd = start + 1;

        // prevent the focus lose
        e.preventDefault();
    }
});

选项卡被正确插入,并按预期显示在文本区域中。当我读取textrea的值并尝试用html格式替换to制表符时,问题就出现了。

代码语言:javascript
复制
$("#code-editor").keyup(function (e) {
        var value = $(this).val();
        //Do formatting
        var lines = value.split("\n");

        var newvalue = "";

        for (var i = 0; i < lines.length; i++) {
            lines[i].replace(/\t/g, "<span style='padding-left:3em'></span>");
            lines[i] += "<br />";
            newvalue += lines[i];
        }

        $('#editor-displayarea').html(newvalue);
    });

我发现在阅读文本区域时,标签似乎不会被保留。

有没有办法绕过这个问题,还是我采取了错误的方法?

谢谢。

更新:我已经尝试使用下面注释中所述的正则表达式的一些变体,但都没有用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-03 22:13:32

替换制表符时,不会存储值。尝试如下所示(我也会将&nbsp;留在跨度中):

代码语言:javascript
复制
for (var i = 0; i < lines.length; i++) {
    var replaced = lines[i].replace(/\t/g, "<span style='padding-left:3em'>&nbsp;</span>");
    replaced += "<br />";
    newvalue += replaced;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13683479

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档