首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在文本区域从右到左写英语

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

Stack Overflow用户
提问于 2016-09-29 13:46:25
回答 3查看 3.2K关注 0票数 1

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

提前谢谢你。

当前行为:بشم测试此دجاج

预期行为:بشم此测试دجاج

注:我是从右到左写的。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-09-29 22:00:56

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

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

若要在键入以下内容时添加RLM字符:

代码语言:javascript
运行
复制
function setWordOrder(e) {
	if (e.key == " ") {
		var textbox = document.getElementById("mytextarea");
		textbox.value += "\u200F";
	}
}
代码语言:javascript
运行
复制
<textarea id="mytextarea" style="direction: rtl" onkeyup="setWordOrder(event)"></textarea>

如果将此文本保存到数据库中,则可以在保存之前删除RLM字符,以便您的数据是“纯的”。如果以后想要显示数据库中的现有文本(不需要用户键入),可以在每个空格字符后面添加RLM字符,然后在屏幕上显示文本。

票数 4
EN

Stack Overflow用户

发布于 2016-09-29 13:50:53

代码语言:javascript
运行
复制
<textarea dir="rtl">
</textarea>
票数 0
EN

Stack Overflow用户

发布于 2016-09-29 13:57:12

您需要做两件事使用方向:RTL用于正确的对齐

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

然后编写一个附加到事件的JavaScript处理程序:"onkeyup",它执行输入字符向左移动的过程。

代码语言:javascript
运行
复制
 function rtl(element)
     {   
      if(element.setSelectionRange){
        element.setSelectionRange(0,0);
     }
    }
    onkeyup="rtl(this);

去看看那些片段

代码语言:javascript
运行
复制
function rtl(element)
{   
    if(element.setSelectionRange){
        element.setSelectionRange(0,0);
    }
}
代码语言:javascript
运行
复制
<input type="text" name="textbox" style="direction:RTL;" onkeyup="rtl(this);"/>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39772116

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档