我正在尝试在我的网络应用中支持RTL方向(用于阿拉伯语)。我的文本域发生了一件奇怪的事情。当我输入AAAA BBBB CCCC DDDD时,我在文本字段中获得了正确的显示,但是当我尝试输入数字时,我得到了一个奇怪的输出。假设我的html代码只包含
<input type="text" size="30"/>
我的css包含
body {
direction: rtl;
}
尝试输入
AAAA BBBB CCCC DDDD - 注意输出是正确的。
尝试输入
1111 2222 3333 4444 - 注意文本字段中发生的事情。
我希望有人可以帮助我。谢谢!
注意:我不能在此使用javascript,因为这适用于移动浏览器。特别是低端设备。
答案 0 :(得分:1)
尽管阿拉伯语是从右到左书写的,但是各个数字组(例如“123”)按原样写入。例如:
<-- reading direction
456 123
获取解释为“123后跟456”。
另外,据我所知,使用字母A-Z会影响分组编号的编写方式;跟随这些字母表的数字组是从左到右书写的,例如, “abc 123 456”按预期出现。
答案 1 :(得分:0)
“奇怪”的事情似乎是输入1111 2222 3333 4444出现,因此1111是最右边,2222是左边的等等。这是{{1}的正确的行为}。数字具有弱中性,并且在没有具有强方向性的字符的情况下,数字串根据方向性集(此处为direction: rtl
)运行。 Unicode Bidirectional Algorithm指定了这一点。如果先输入一个拉丁字母,然后输入数字,请注意事情是如何变化的。
如果页面应该具有从右到左的方向性,那么这种方向性的规则通常也应该应用在文本输入字段中。如果您希望文本字段具有从左到右的方向性,由于某种原因,请在其上设置HTML属性rtl
。 (通常最好使用HTML而不是CSS来实现方向性,因为方向性不仅仅是一个可选的表示建议,而是写作系统规则的一部分。)
答案 2 :(得分:0)
使用此类:
.number_ltr {
direction: ltr!important;
unicode-bidi: embed;
}
因此您的HTML代码应如下所示:
<input class="number_ltr" type="text" size="30"/>