出于某种原因,当这篇文章更新时,我从未被提醒过……昨晚,我有一个关于如何确定换行符位置的绝妙想法……我会重建字符串,并每次检查宽度,它有效,所以我来到这里分享它......发现我落后了 1 周
无论如何 2 重要的事情
您提供的代码使用了与我(您做得好)相同的绝妙想法,但是当我测试它时,它正确地打破了第一行,然后在每个字符后添加了一个换行符(在链接 jsfiddle.net 上测试)
我添加了我的代码,它使用 jquery 并使用跨度的宽度来确定何时中断首先我尝试使用 div 的宽度,但 div.width() 返回默认宽度,而不是内容的宽度。
我知道这可能不适用于所有浏览器,
所以,我恳请如果有人知道使这种方法万无一失或接近它的方法,请分享。
首先,样式是同步 textarea 和 div 之间的字体(所有属性)、设置大小以及(对于 IE)删除自动出现的任何滚动条所必需的。
.inputArea {
width:200px;
height:100px;
font-family:Arial;
font-size:12px;
overflow: auto;
border: 1px solid #cccccc;
padding:0;
margin:0;
}
.divArea {
font-family:Arial;
font-size:12px;
}
接下来,我包括 jquery 和我的自定义函数:
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js
"></script>
<script type="text/javascript">
$(document).ready(function() {
$("#breakUp").click(function () {
showLineBreaks();
addLineBreaks();
});
function showLineBreaks() {
content = $("#textEntered").val();
//replace line breaks in content with "|" to allow for replacement below
content = content.replace("\r\n", "
");
content = content.replace("\r", "
");
content = content.replace("\n", "
");
$("#unedited").html(content);
}
function addLineBreaks() {
content = $("#textEntered").val();
//replace line breaks in content with "|" to allow for replacement below
content = content.replace("\r\n", "|");
content = content.replace("\r", "|");
content = content.replace("\n", "|");
tempContent = "";
$("#edited").html("");
for (var i = 0; i ");
} else {
tempContent = $("#edited").html();
$("#edited").html(tempContent + content.charAt(i));
if ($("#edited").width() > 200) {
$("#edited").html(tempContent + "
" + content.charAt(i));
}
}
}
}
});
<script>
最后,我的 html 测试页
Enter text into the textarea below (Set to 200 px width, 100 px height)<br>
<textarea id="textEntered" class="inputArea"></textarea>
<br><br>
The div below will display that text WITHOUT wrapping, BUT replacing all existing line breaks with <br><br>
<div id="unedited"></div>
<br>
The following div will display that text with line breaks ADDED to fit the wrapping<br>
<div class="divArea"><span id="edited"></span></div>
<br>
<button id="breakUp">Click Here to Convert</button>