如何在文本区域中从右到左书写英文
How to write english from right to left in a text area
我有一个关于在文本区域中书写的非常简单的问题。当我为页面设置 dir=RTL 并用英语书写时,浏览器或文本区域会像任何英语作家一样从左到右书写单词,但我希望它从右到左书写单词。有人可以帮我吗?
提前致谢。
当前行为:
بشم 测试 [this] دواو
预期行为:
بشم [this] 测试 دجاج
注意:我是从右往左写的
<textarea dir="rtl">
</textarea>
你需要做两件事
使用 direction:RTL 进行右对齐
<input type="text" name="textbox" style="direction:RTL;"
然后编写一个将附加到事件的 JavaScript 处理程序:"onkeyup",它将输入的字符向左移动
function rtl(element)
{
if(element.setSelectionRange){
element.setSelectionRange(0,0);
}
}
onkeyup="rtl(this);
查看代码段
function rtl(element)
{
if(element.setSelectionRange){
element.setSelectionRange(0,0);
}
}
<input type="text" name="textbox" style="direction:RTL;" onkeyup="rtl(this);"/>
RTL 文本框的默认行为将由 space 分隔的多个英语单词视为 "left-to-right run",从而将其呈现为较大的 RTL 文本中的迷你英语句子 (LTR)。这就是为什么您会看到这些英文单词从左到右呈现的原因。
为了绕过这个默认行为,我们可以捕获 space 字符,它们是从前一个单词继承方向性的中性字符,并添加一个特殊的不可见的 Unicode 控制字符,称为 Right-to-Left Mark
(RLM ).此字符的行为类似于阿拉伯字符,但没有视觉表示。它只会让每个单词(无论是哪种语言)都以一个不可见的阿拉伯字符开头,这将使浏览器将其呈现在前一个单词的左侧。
要在键入时添加 RLM 字符:
function setWordOrder(e) {
if (e.key == " ") {
var textbox = document.getElementById("mytextarea");
textbox.value += "\u200F";
}
}
<textarea id="mytextarea" style="direction: rtl" onkeyup="setWordOrder(event)"></textarea>
如果将此文本保存到数据库中,您可以在保存前删除 RLM 字符,这样您的数据就是 "pure"。如果您稍后想要显示数据库中的现有文本(无需用户键入),您可以在每个 space 字符之后自己添加 RLM 字符,然后再在屏幕上显示文本。
我有一个关于在文本区域中书写的非常简单的问题。当我为页面设置 dir=RTL 并用英语书写时,浏览器或文本区域会像任何英语作家一样从左到右书写单词,但我希望它从右到左书写单词。有人可以帮我吗?
提前致谢。
当前行为: بشم 测试 [this] دواو
预期行为: بشم [this] 测试 دجاج
注意:我是从右往左写的
<textarea dir="rtl">
</textarea>
你需要做两件事 使用 direction:RTL 进行右对齐
<input type="text" name="textbox" style="direction:RTL;"
然后编写一个将附加到事件的 JavaScript 处理程序:"onkeyup",它将输入的字符向左移动
function rtl(element)
{
if(element.setSelectionRange){
element.setSelectionRange(0,0);
}
}
onkeyup="rtl(this);
查看代码段
function rtl(element)
{
if(element.setSelectionRange){
element.setSelectionRange(0,0);
}
}
<input type="text" name="textbox" style="direction:RTL;" onkeyup="rtl(this);"/>
RTL 文本框的默认行为将由 space 分隔的多个英语单词视为 "left-to-right run",从而将其呈现为较大的 RTL 文本中的迷你英语句子 (LTR)。这就是为什么您会看到这些英文单词从左到右呈现的原因。
为了绕过这个默认行为,我们可以捕获 space 字符,它们是从前一个单词继承方向性的中性字符,并添加一个特殊的不可见的 Unicode 控制字符,称为 Right-to-Left Mark
(RLM ).此字符的行为类似于阿拉伯字符,但没有视觉表示。它只会让每个单词(无论是哪种语言)都以一个不可见的阿拉伯字符开头,这将使浏览器将其呈现在前一个单词的左侧。
要在键入时添加 RLM 字符:
function setWordOrder(e) {
if (e.key == " ") {
var textbox = document.getElementById("mytextarea");
textbox.value += "\u200F";
}
}
<textarea id="mytextarea" style="direction: rtl" onkeyup="setWordOrder(event)"></textarea>
如果将此文本保存到数据库中,您可以在保存前删除 RLM 字符,这样您的数据就是 "pure"。如果您稍后想要显示数据库中的现有文本(无需用户键入),您可以在每个 space 字符之后自己添加 RLM 字符,然后再在屏幕上显示文本。