js 回车转<br />

抛出问题

最近做项目遇到个需求:“需支持换行,可考虑用富文本,但不提供换行外的其它功能”。

方案

只是需要提供换行而已,所以根本不需要用到富文本。直接用textarea然后用正则匹配把回车转成<br />不就行了吗?

代码

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>回车转<br /></title>
</head>
<body>
  <textarea rows="4" cols="50" id='text'></textarea>
<script>
  var textarea = document.getElementById('text');
  textarea.addEventListener('input', function(e){
    var string = e.target.value.replace(/\n/g,'<br />');
    console.log(string);
  })
</script>
</body>
</html>

思考

  1. 为什么正则匹配只是\n而不需要\r\n呢?
    在JavaScript的string类型中,所有的回车表现形式都只有\n一种类型,无论在MAC OS系统还是windows系统。实践证明,使用\r\n匹配反而不起作用
  2. 监听事件为input而不是change呢?
    oninput事件要求值的每一次更新都触发,而onchange事件不要球每一次更新都触发,它发生在textarea(或者input等)失去焦点时

写在最后

实验证明,后端(java)能接收到textarea保留的回车,并自动转义成\n的形式,传回来给前端的时候也能自动变成可识别的这种格式。故遇到这种需求时可先不转,试一下前后端对接时能不能自动转换

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容