4

我正在尝试在我的网络应用程序中支持 RTL 方向(用于阿拉伯语)。我的文本字段发生了一件奇怪的事情。当我输入 AAAA BBBB CCCC DDDD 时,我在文本字段中得到了正确的显示,但是当我尝试输入数字时,我得到了一个奇怪的输出。假设我的 html 代码只包含

<input type="text" size="30"/>

我的CSS包含

body {
    direction: rtl;
}

尝试输入

AAAA BBBB CCCC DDDD - 注意输出是正确的。

尝试输入

1111 2222 3333 4444 - 注意文本字段中发生的情况。

我希望有一个人可以帮助我。谢谢!

注意:我不能在其中使用 javascript,因为这是针对移动浏览器的。特别是低端设备。

4

3 回答 3

2

使用这个类:

.number_ltr {
    direction: ltr!important;
    unicode-bidi: embed;
}

因此您的 HTML 代码应如下所示:

<input class="number_ltr" type="text" size="30"/>
于 2018-06-20T15:02:08.080 回答
1

尽管阿拉伯语是从右到左书写的,但单独的数字组(例如“123”)仍按原样书写。例如:

<-- reading direction
456 123

被解释为“123 后跟 456”。

此外,据我所知,字母 AZ 的使用会影响分组数字的书写方式。这些字母后面的数字组是从左到右书写的,例如“abc 123 456”按预期出现。

于 2013-07-22T06:11:32.007 回答
0

“奇怪”的事情似乎是输入 1111 2222 3333 4444 出现,因此 1111 在最右边,2222 在它的左边,等等。这是正确的行为direction: rtl。数字的中立性较弱,在没有方向性强的字符的情况下,数字串按照方向性集(这里rtl)运行。Unicode 双向算法指定了这一点。请注意,如果您先输入拉丁字母,然后输入数字,情况会发生怎样的变化。

如果页面应该具有从右到左的方向性,那么这种方向性的规则通常也应该应用于文本输入字段。如果您希望文本字段具有从左到右的方向性,出于某种原因,请dir=ltr在其上设置 HTML 属性。(通常使用 HTML 而不是 CSS 来获得方向性更好,因为方向性不仅是可选的表示建议,而且是书写系统规则的一部分。)

于 2013-07-22T06:09:13.353 回答