- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个显示在文本区域(从右到左方向)中的文本字符串。用户可以动态调整文本区域的大小(为此我使用 jquery),文本将根据需要换行。
当用户点击提交时,我将采用该文本并使用 PHP 创建图像,但在提交之前我想知道“换行符”或“自动换行”发生的位置。
到目前为止,我所看到的所有地方都只向我展示了如何在 php 端处理换行符。我想明确表示没有换行符。我所拥有的是一个 LONG 字符串,它将根据用户设置的文本区域的宽度以不同的方式进行换行。
我不能使用“列”或任何其他标准宽度表示,因为我有一个非常复杂的阿拉伯字体,它实际上由许多不同宽度的字形(字符)组成。
如果有人知道一种访问自动换行位置的方法(如果需要,可以在文本区域或 div 中),我真的很想知道。
我唯一的其他解决方案是实际存储(在我的数据库中)每个字符的宽度(有点乏味,因为有 600 多种不同字体的 200 多个字符,总共......一些巨大的数字)。
我的希望不高,但我想我会问。
谢谢
我。贾马尔
最佳答案
好吧,不用找到换行符(这实际上是不可能的),您可以强制它们进入文本区域,使用这个函数:
function ApplyLineBreaks(strTextAreaId) {
var oTextarea = document.getElementById(strTextAreaId);
if (oTextarea.wrap) {
oTextarea.setAttribute("wrap", "off");
}
else {
oTextarea.setAttribute("wrap", "off");
var newArea = oTextarea.cloneNode(true);
newArea.value = oTextarea.value;
oTextarea.parentNode.replaceChild(newArea, oTextarea);
oTextarea = newArea;
}
var strRawValue = oTextarea.value;
oTextarea.value = "";
var nEmptyWidth = oTextarea.scrollWidth;
var nLastWrappingIndex = -1;
for (var i = 0; i < strRawValue.length; i++) {
var curChar = strRawValue.charAt(i);
if (curChar == ' ' || curChar == '-' || curChar == '+')
nLastWrappingIndex = i;
oTextarea.value += curChar;
if (oTextarea.scrollWidth > nEmptyWidth) {
var buffer = "";
if (nLastWrappingIndex >= 0) {
for (var j = nLastWrappingIndex + 1; j < i; j++)
buffer += strRawValue.charAt(j);
nLastWrappingIndex = -1;
}
buffer += curChar;
oTextarea.value = oTextarea.value.substr(0, oTextarea.value.length - buffer.length);
oTextarea.value += "\n" + buffer;
}
}
oTextarea.setAttribute("wrap", "");
}
此函数获取文本区域的 ID,只要有自动换行,它就会将换行符插入文本区域。在表单提交中运行该函数,您将在服务器端代码中获得带有适当换行符的文本。
已在 IE、Chrome 和 Firefox 上成功测试,您可以在这里自行查看:http://jsfiddle.net/yahavbr/pH79a/1/ (预览会显示新行)
关于javascript - 在 textarea 中找到 "line-breaks"是阿拉伯文字换行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4719777/
在 Vaadin 7.0,显示时JavaBean Table 中的数据与 BeanContainer ,用新数据刷新表的正确方法是什么? 最佳答案 该表通过监听器监视表项的属性。如果您通过表的 Ite
首先,我使用的是带有 Axis2 1.6.2 的 eclipse,我正在 tomcat 6 上部署我创建的 Web 服务。Web 服务是在 eclipse 中通过自上而下的方法创建的。 我被要求使对我
我已将 Rails 3.1.1 应用程序升级到 Rails 3.1.3,现在,对于每个请求,它仅响应错误数量的参数(3 for 1)。不幸的是,它没有说明错误在哪里,并且应用程序跟踪为空。我认为存在一
我是一名优秀的程序员,十分优秀!