我有一个非常简单的问题,与文字领域的写作有关。当我为页面设置dir=RTL并用英语写作时,浏览器或文本区域会像任何英语作者一样从左到右写单词,但我希望它从右到左写单词。有人能帮帮我吗?
提前谢谢你。
当前行为:بشم测试此دجاج
预期行为:بشم此测试دجاج
注:我是从右到左写的。
发布于 2016-09-29 22:00:56
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字符,然后在屏幕上显示文本。
发布于 2016-09-29 13:50:53
<textarea dir="rtl">
</textarea>
发布于 2016-09-29 13:57:12
您需要做两件事使用方向: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);"/>
https://stackoverflow.com/questions/39772116
复制相似问题