gpt4 book ai didi

javascript - 在 textarea 中找到 "line-breaks"是阿拉伯文字换行

转载 作者:可可西里 更新时间:2023-11-01 01:37:24 25 4
gpt4 key购买 nike

我有一个显示在文本区域(从右到左方向)中的文本字符串。用户可以动态调整文本区域的大小(为此我使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com