Javascript Facebook帖子中的RTL文本重新排序单词

Javascript Facebook帖子中的RTL文本重新排序单词,javascript,facebook,right-to-left,Javascript,Facebook,Right To Left,我来自突尼斯,目前正在开发一个名为PHPFOX的PHP脚本。在其中,我想集成一种自动更改TextBox文本方向的功能。具体来说,当你进入Facebook并想留下评论时,文本框的输入方向将根据你选择的键盘方向而改变 换句话说,如果您为键盘选择了阿拉伯语,TextBox会自动设置为RTL方向 以下是我目前使用的代码: $('input').keyup(function() { $this = $(this); if ($this.val().length == 1) {

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

换句话说,如果您为键盘选择了阿拉伯语,
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上出现的内容:


看到区别了吗?我该如何解决这个问题呢?

首先,你所采取的方法非常出色,我为你鼓掌。通过CSS切换
的方向以允许自然键入非常有意义

然而,你的输出之所以出人意料,是因为你发送到Facebook的生成内容。我的猜测是,由于文本的最后几个字符是RTL,所以输入的CSS仍然设置为RTL

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


LTR:这是一些文字


RTL:这是一些文字
由于第二个
显示为
dir=“rtl”
,因此文本最终被重新排序,每个LTR短语被视为单个rtl“单词”

你可以考虑,在你的例子中,只是确保在提交帖子之前,将CSS的方向设置回<代码> LTR ,这将产生我认为你正在寻找的结果。


如果您感兴趣,下面是一篇讨论
LTR
RTL
文本的HTML和纯文本样式呈现之间的区别的文章。它不会给你任何答案,但会指出问题本身的更多细节。

如果我的答案对你有帮助,请考虑通过点击分数下方的小复选框将其标记为“接受”。如果没有,请让我知道你需要什么进一步的信息,这样我可以帮助你更多。
<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>