如何在文本区域中从右到左书写英文

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 字符,然后再在屏幕上显示文本。