3

私はチュニジア出身で、現在 という PHP スクリプトを開発していますPHPFOXTextBoxその中に、テキストの方向を自動的に変更する機能を統合したいと考えています。具体的には、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");
        }
    }
});

すべてが入力に対して正常に機能します。しかし、自分のサイトに混合文を入力して Facebook に投稿するとLTRどうなるか見てみましょう。RTL

ここに私が入力するものがあります:

入力

Facebookに表示される内容は次のとおりです。

結果

違いを見ます?これを解決するにはどうすればよいですか?

4

1 に答える 1

2

まず第一に、あなたがとっているアプローチは素晴らしく、私はあなたに拍手を送ります。自然な入力を可能にするために CSS 経由で方向を切り替えること<input>は、非常に理にかなっています。

ただし、出力が奇妙に出力される理由は、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>

2 番目<span>は で表示されるためdir="rtl"、テキストは並べ替えられ、各 LTR 句は 1 つの RTL「単語」として扱われます。

例

あなたの例では、投稿を送信する前に、CSS の方向を に戻すことを確認するだけでLTR、あなたが探していると思う結果が得られます。

興味のある方は、HTML とテキスト スタイルのレンダリングの違いについて説明しているブログ記事ご覧ください。回答は提供されませんが、問題自体の詳細が示されます。LTRRTL

于 2013-04-25T20:34:13.217 に答える