文字区:
在第一行的末尾没有ENTER,是否有任何解决方案可以知道它转向下一行的字符? 以此为例,它转到字符“哪”之后或第13个字符之后的下一行。 (可以输入SBC案例或DBC案例字符。)
答案 0 :(得分:1)
好吧,当你创建一个textarea时,你应该提供列数,所以如果它是包装因为它到达了行的末尾,那么假设字符数是你拥有的列数似乎是公平的指定。或者我错过了什么?
答案 1 :(得分:0)
cols
属性确定textarea
元素的宽度,但通常会被样式表和width
属性覆盖。即使没有CSS设置的宽度,大多数浏览器也不严格执行cols
(在Chrome中,只要存在垂直滚动条,它至少是准确的),并且除了行通常包裹在字边界而不是字符。
这是一个丑陋的解决方案,但它应该有效。我们的想法是将textarea元素的高度设置为0,然后一次从其值字符串的末尾删除单词,并检查scrollHeight
属性是否有更改。
//make scrollbars take up space even when they are not needed
//necessary to keep space available for text constant
txtarea.style.overflow = 'scroll !important';
txtarea.style.height = '0px !important';
var tmpvalue = txtarea.value;
var currentscroll = txtarea.scrollHeight;
var wrapat = [];
var parts;
//Regex breaks textarea value into ['every word but the last', 'one']
while (parts = txtarea.value.match(/([^\0]*)\s\w*/m)) {
txtarea.value = parts[1];
//scrollHeight has changed, add wrap index to array
if (txtarea.scrollHeight < currentscroll) {
wrapat.push(txtarea.value.length-1);
currentscroll = txtarea.scrollHeight;
}
}
//sort wrap array for niceness
wrapat = wrapat.sort(function(a,b) { return a-b; });
//restore everything to normal
txtarea.value = tmpvalue;
txtarea.style.height = '';`
在此尝试代码http://jsbin.com/alasa3/edit
可能存在错误,例如此代码不处理长的“单词”,例如URL可能会被破坏。此外,还需要一些额外的计算来确定一条线是自动包装还是由于换行(在链接中的某些代码处理),并且它可能会遇到由多个空格/换行符分隔的单词的问题。但那是基本的想法。
如果有一个更简单的解决方案我就不知道了。