3

我来自突尼斯,目前正在开发一个名为PHPFOX. 在其中,我想集成一种TextBox自动更改文本方向的功能。具体来说,当您访问 Facebook 并想发表评论时,TextBox输入方向将根据您选择的键盘方向而改变。

换句话说,如果您为键盘选择了阿拉伯语,TextBox则会自动设置RTL方向。

这是我到目前为止使用的代码:

$('input').keyup(function() {
    $this = $(this);
    if ($this.val().length == 1) {
        var x = new RegExp("[\x00-\x80]+"); // ASCII
        //alert(x.test($this.val()));

        var isAscii = x.test($this.val());
        if(isAscii) {
            $this.css("direction", "ltr");
        } else {
            $this.css("direction", "rtl");
        }
    }
});

输入一切正常。但是,看看当我在我的网站中输入一个混合句子,LTR然后RTL将其发布到 Facebook 时会发生什么:

这是我输入的内容:

输入

以下是 Facebook 上显示的内容:

结果

看到不同?我该如何解决这个问题?

4

1 回答 1

2

首先 - 你采用的方法非常棒,我为你鼓掌。切换<input>via CSS 的方向以允许自然输入非常有意义。

但是,您的 OUTPUT 出现异常的原因是您发送到 Facebook 的生成内容。我的猜测是,由于文本的最后几个字符在 RTL 中,因此您输入的 CSS 仍设置为 RTL。

考虑这个例子(结果可以在这里看到):

<div>
 <b>LTR:</b> <span dir="ltr">This is some الفبای فارسی text</span>
 <br /><br />
 <b>RTL:</b> <span dir="rtl">This is some الفبای فارسی text</span>
</div>

因为第二个<span>是用 显示的dir="rtl",所以文本最终会重新排序,每个 LTR 短语都被视为一个 RTL“单词”。

例子

在您的示例中,您可能会考虑尝试的只是确保在提交帖子之前,将 CSS 方向设置回LTR,这将产生我认为您正在寻找的结果。

如果您有兴趣,这里有一篇博LTR文,讨论 HTML 和纯文本样式渲染和文本之间的区别RTL。它不会为您提供任何答案,但会指出有关问题本身的更多细节。

于 2013-04-25T20:34:13.217 回答