【问题标题】:Add linebreak with jQuery at end of each textarea row在每个 textarea 行的末尾添加带有 jQ​​uery 的换行符
【发布时间】:2012-06-02 10:28:42
【问题描述】:

所以我已经在谷歌上搜索了几天,但到目前为止我还没有找到解决方案,所以我向你们求助,希望有一个可能的解决方案。

我需要在文本区域的每一行末尾添加一个换行符,然后再将其发送到 PHP。也就是说,即使用户没有按回车键,但如果一个单词被截断或者它只是跳下一行,因为它已经填充了 textarea。我需要使用 jQuery 或 Javascript 来实现。

有没有人对如何做到这一点有什么好主意?

谢谢!

更新:请记住,我还需要通过带有 Ajax 的 json 编码字符串将文本发送到 PHP。我应该提到这一点!

【问题讨论】:

  • 您应该考虑用户按ENTER键并使用PHP的nl2br函数。
  • 您将遇到的问题是不同的浏览器会将单词包装在不同的位置,即使文本区域的宽度固定。为什么不每说几句话就自己打破呢?
  • @Sarfraz 这将是来自用户的动态输入,因此无法控制。
  • @davidethell 我可以做到这一点,不是单词而是字符数,但它会切断单词,所以我必须构建一些东西来测试单词是否可以放在一行然后移动整个词等感觉没必要

标签: javascript jquery textarea line-breaks


【解决方案1】:

【讨论】:

  • 嘿,这正是我所需要的,我现在不想自己编写这种脚本,但是谢谢,它工作得很好。 @Mubix
【解决方案2】:

Textarea 元素具有 COLS 属性,表示每行的最大字符数。浏览器会跳转包含第 (COLS+1) 个字符的单词。你可以写一段 javascript 大致做这样的事情。

  • 有一个计数器来计算自上次换行以来的字符数。
  • 逐个字符循环遍历字符串。
  • 如果您看到换行符,请重置计数器。
  • 如果您看到自上次换行符(或开头)以来的第 21 个字符,请向后退直到您看到单词的开头(例如空格)添加换行符并重置计数器并继续。
  • 其他增加计数器

请注意,换行是浏览器逻辑的一部分,因此如果您希望它与浏览器中的完全一样,您可能必须研究每个浏览器(例如他们认为的分词)。

【讨论】:

    【解决方案3】:

    textareas 有一个鲜为人知的属性,称为 wrap。但它不在标准中,因此您的浏览器兼容性里程可能会有所不同。使用 chrome 转到 http://jsfiddle.net/nj3cG/ 并提交表单,同时在 chrome 的开发工具中查看网络选项卡。您会在表单发送的内容中看到换行符

    http://www.abiglime.com/webmaster/reference/html/tags/textarea.htm

    <textarea wrap="off|physical|virtual|hard|soft">
    

    说明

    wrap 属性用于定义文本在文本框中的换行方式。可能的值:

    • off 不允许自动换行
    • physical 允许在使用脚本传输数据时自动换行并发送带有换行符的文本。在某些浏览器中也可以称为hard
    • virtual 在框中显示自动换行,但在使用脚本传输数据时将数据作为一长串文本发送。在某些浏览器中也可以调用soft

    【讨论】:

      猜你喜欢
      • 2017-04-28
      • 1970-01-01
      • 2021-07-21
      • 1970-01-01
      • 2018-04-15
      • 2016-01-03
      • 1970-01-01
      • 1970-01-01
      • 2013-05-25
      相关资源
      最近更新 更多