Javascript text区域-获取每一行,查找换行符
我想把每一行都放在一个文本区域。文本区域很小,并根据宽度限制包装单词。所以我试着:Javascript text区域-获取每一行,查找换行符,javascript,jquery,html,css,textarea,Javascript,Jquery,Html,Css,Textarea,我想把每一行都放在一个文本区域。文本区域很小,并根据宽度限制包装单词。所以我试着: // Sample text: I want to find(line wrapped) all lines here $("#textarea1").val().split(/(\r\n|\n|\r)/gm).length // 1, not the right length, should be 2 $("#textarea1").val().split(/\r?\n/g).length // 1 $(
// Sample text: I want to find(line wrapped) all lines here
$("#textarea1").val().split(/(\r\n|\n|\r)/gm).length
// 1, not the right length, should be 2
$("#textarea1").val().split(/\r?\n/g).length
// 1
$("#textarea1").val().split("\n").length
// 1
$("#textarea1").val().split("\r").length
// 1
我还尝试了
wrap=“hard”
和whitespace:pre-wrap
单独和一起使用似乎没有发现换行符!!需要帮助,谢谢。我想这就像你说的那样:文本区域根据宽度限制来包装单词-这意味着你找不到换行符。您要查找的换行符是字符,而这些字符尚未插入到您的文本中。我想这就像您所说的:文本区域根据宽度限制来包装单词-这意味着您找不到换行符。您要查找的换行符是字符,这些字符尚未插入到您的文本中。因此,我的做法是:
- 将有问题的
克隆到透明的textarea中。使用透明字体textarea-$(“#text”)
- 将克隆的id值更改为,例如,
,并将其附加到DOM中$(“#newtext”)
- 在每个keyup上,我们在
之前取$(“#text”)的值。将该值放入这个字符的keyup
并检查$(“#新文本”)
。如果为true=>$(“#新文本”).get(0).scrollHeight()>$(“#新文本”).height()
字符导致换行李>此
- 在循环中增加
行,直到$(“#新文本”)
$(“#新文本”)。获取(0)。scrollHeight()===$(“#新文本”)。height()
- 在
字符之前提取文本,添加此
,将\n
字符添加到此
$(“#新文本”).val()
- 将
$(“#新文本”).val()应用于
李>$(“#文本”).val()
- 从DOM中删除
$(“#newtext”)
- 对每个keyup事件重复上述所有步骤
- 从DOM中删除
$(“#text”).val().split(“\n”)
找到新行(注意-如果我们不将透明textarea附加到DOM中,它的
scrollHeight()
将未定义)因此我这样做的方式是:
- 将有问题的
textarea-$(“#text”)
克隆到透明的textarea中。使用透明字体
- 将克隆的id值更改为,例如,
$(“#newtext”)
,并将其附加到DOM中
- 在每个keyup上,我们在
这个字符的keyup
之前取$(“#text”)的值。将该值放入$(“#新文本”)
并检查$(“#新文本”).get(0).scrollHeight()>$(“#新文本”).height()
。如果为true=>此
字符导致换行李>
- 在循环中增加
$(“#新文本”)
行,直到
$(“#新文本”)。获取(0)。scrollHeight()===$(“#新文本”)。height()
- 在
此
字符之前提取文本,添加\n
,将此
字符添加到$(“#新文本”).val()
- 将
$(“#新文本”).val()应用于$(“#文本”).val()
李>
- 从DOM中删除
$(“#newtext”)
- 对每个keyup事件重复上述所有步骤
上述答案适用于与以下类似的行:
因此,基本上我们将换行符转换为新行,可以使用$(“#text”).val().split(“\n”)
找到新行
(注意-如果我们不将透明textarea附加到DOM,它的scrollHeight()
将是未定义的)我甚至不确定这是否可行。不遍历阴影DOM(不是每个浏览器都有)。这是因为包装是由于CSS,而不是保存在文本区域的值中。这个问题似乎非常相关:嗯,它非常相关,几乎可以完成工作!我甚至不确定这是否可能。不遍历阴影DOM(不是每个浏览器都有)。这是因为包装是由于CSS,而不是保存在文本区域的值中。这个问题似乎非常相关:嗯,它非常相关,几乎可以完成工作!检测字符宽度的问题在于它取决于字体大小和字体类型。例如,在塔荷马,l(小l)的宽度比G小得多,我想对于《泰晤士报新罗马版》来说,差别更小。检测字符宽度的问题在于它取决于字体大小和字体类型。例如,在塔荷马,l(小l)的宽度比G小得多,我想对于《泰晤士报新罗马版》来说,差别更小。这让事情变得复杂。