按 Enter 键时创建一个 <br /> 标记

3
我做了一个文本区域表单,你可以更改你的描述,就像我之前的问题一样,我问过是否有任何方法可以禁用标签。但现在,当你按下 Enter 键时,是否有任何方式让 <br /> 在文本区域中设置,这样用户就不必每次想要换行时都输入 <br /> 了呢?
我想到了一些方法,例如查找空白处,但这会起作用吗?我不熟悉 onpress 事件...或者如果它在用户提交后检查输入,然后检查换行符。
我在 YouTube、这个网站和许多其他网站上看到过这种功能。

你想让文本区域在用户按下回车键时自动添加可见字符串“<br />”吗?还是你想让文本区域不显示它,但在后端包含它,假设该值被提交到数据库? - joshuahedlund
如果您允许一些HTML,包括一些块元素(如P),那么可能会出现双换行符。 - Nicole
3个回答

9
在PHP中,您可以使用nl2br()函数,将任何换行符替换为<br />标签。

不用谢。我其实犹豫了一下是否回答,因为我不确定你是在寻找前端还是后端的实现,因为你的标签列出了PHP和JavaScript两种语言。我是一个PHP程序员,所以我选择了我熟悉的语言。;)很高兴能帮到你。 - AgentConundrum
我是这个网站的新手,请问你能告诉我如何做吗?我找不到按钮在哪里! - ZyteX
我的答案下面有一个复选标记。如果你点击它,它会将答案标记为已接受。这是可选的,但会受到赞赏。 - AgentConundrum

2
<script src="jquery.js"></script>
<script>
    $(function ()
    {
        $('#txt').keyup(function (e){
            if(e.keyCode == 13){
                var curr = getCaret(this);
                var val = $(this).val();
                var end = val.length;

                $(this).val( val.substr(0, curr) + '<br>' + val.substr(curr, end));
            }

        })
    });

    function getCaret(el) { 
        if (el.selectionStart) { 
            return el.selectionStart; 
        }
        else if (document.selection) { 
            el.focus(); 

            var r = document.selection.createRange(); 
            if (r == null) { 
                return 0; 
            } 

            var re = el.createTextRange(), 
            rc = re.duplicate(); 
            re.moveToBookmark(r.getBookmark()); 
            rc.setEndPoint('EndToStart', re); 

            return rc.text.length; 
        }  
        return 0; 
    }

</script>
<div id="content">
    <textarea id="txt" cols="50" rows="10"></textarea>
</div>

1
你可以这样做:
function createBr(e) {
if (e.keyCode == 13) { document.createElement("BR"); // 在里面进行你想要的操作 } }
希望对你有所帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接