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

时间:2016-09-29 13:46:26

标签: javascript html forms textarea right-to-left

我有一个非常简单的问题,涉及在文本区域写作。当我为页面设置dir = RTL并且用英语写时,浏览器或textarea会像任何英文作者那样从左到右书写单词,但我希望它从右到左书写单词。有人能帮帮我吗?

提前谢谢。

当前行为: بشم测试[this]دجاج

预期行为: بشم[this]测试دجاج

注意:我是从右到左书写

3 个答案:

答案 0 :(得分:3)

RTL文本框的默认行为将由空格分隔的多个英语单词视为“从左到右运行”,从而将其作为较大RTL文本中的迷你英语句子(LTR)。这就是为什么你看到那些英文单词从左到右呈现。

要绕过此默认行为,我们可以捕获空格字符,这些空格字符是从前一个字继承其方向性的中性字符,并添加一个名为Right-to-Left Mark(RLM)的特殊不可见Unicode控制字符。此字符的行为类似于阿拉伯字符,但没有可视化表示。它只会使每个单词(无论哪种语言)都以一个不可见的阿拉伯字符开头,这将使浏览器将它呈现在前一个单词的左侧。

在输入时添加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字符,以使数据“纯净”。如果您以后想要显示数据库中的现有文本(无需用户输入),您可以在每个空格字符后自己添加RLM字符,然后再在屏幕上显示文本。

答案 1 :(得分:0)

<textarea dir="rtl">
</textarea>

答案 2 :(得分:0)

你需要做两件事 使用方向:RTL用于右对齐

<input type="text" name="textbox" style="direction:RTL;"

然后编写一个附加到事件的JavaScript处理程序:&#34; onkeyup&#34;,执行将输入的字符移动到LEFT

 function rtl(element)
     {   
      if(element.setSelectionRange){
        element.setSelectionRange(0,0);
     }
    }
    onkeyup="rtl(this);

查看代码段

&#13;
&#13;
function rtl(element)
{   
    if(element.setSelectionRange){
        element.setSelectionRange(0,0);
    }
}
&#13;
<input type="text" name="textbox" style="direction:RTL;" onkeyup="rtl(this);"/>
&#13;
&#13;
&#13;