我有一个非常简单的问题,涉及在文本区域写作。当我为页面设置dir = RTL并且用英语写时,浏览器或textarea会像任何英文作者那样从左到右书写单词,但我希望它从右到左书写单词。有人能帮帮我吗?
提前谢谢。
当前行为: بشم测试[this]دجاج
预期行为: بشم[this]测试دجاج
注意:我是从右到左书写
答案 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);
查看代码段
function rtl(element)
{
if(element.setSelectionRange){
element.setSelectionRange(0,0);
}
}
&#13;
<input type="text" name="textbox" style="direction:RTL;" onkeyup="rtl(this);"/>
&#13;