2016-09-29 12 views
1

私はテキストエリアに書くことに関する非常に簡単な質問があります。ページのdir = RTLを設定して英語で書くと、ブラウザーやテキストエリアは英語のライターと同じように左から右に単語を書きますが、右から左に単語を書きたいと思います。誰かが私を助けることができますか?テキストエリアの右から左に書く方法

ありがとうございます。

現在の行動: بشمテスト[この]دجاج

予想される動作: بشم[この]テストدجاج

注:私はあなたが必要

+0

英語はRTL言語ではありません。それは意味をなさない。 – Quentin

+0

''?または入力を尊敬したいですか? –

+0

アラビア語と英語の両方を入力すると正しく右から左に移動しますが、2つの連続する英語の単語を書くと右に、アラビア語/ヘブライ語のような振る舞いをします。 –

答えて

3

RTLテキストボックスのデフォルトの動作では、空白で区切られた複数の英単語を「左から右への実行」として扱い、la内のミニ英文(LTR) rger RTLテキスト。そういうわけで、それらの英語の言葉が左から右にレンダリングされるのが見えます。

このデフォルトの動作を回避するには、前の単語から方向性を継承する中立文字である空白文字をキャッチし、Right-to-Left Mark(RLM)という特殊な非表示のUnicode制御文字を追加します。この文字はアラビア文字のように動作しますが、視覚的な表現はありません。それは、ブラウザに前の単語の左側にそれをレンダリングさせる目に見えないアラビア文字で始まるすべての単語(どの言語に関係なく)を作成するだけです。入力中

はRLM文字を追加するには:

function setWordOrder(e) { 
 
\t if (e.key == " ") { 
 
\t \t var textbox = document.getElementById("mytextarea"); 
 
\t \t textbox.value += "\u200F"; 
 
\t } 
 
}
<textarea id="mytextarea" style="direction: rtl" onkeyup="setWordOrder(event)"></textarea>

あなたが保存する前にRLM文字を削除することができ、データベースにこのテキストを保存する場合は、あなたのデータが「純粋」であるように。データベースから既存のテキストを後で表示したい場合(ユーザーが入力しなくても)、空白文字の後にRLM文字を追加してから、テキストを画面に表示することができます。

+0

感謝の男は本当にその日を救った:D –

0
<textarea dir="rtl"> 
</textarea> 
+0

これを試してもうまくいきませんでした。 –

0

を右から左に書いています2つのことを行うには 方向を使用:右揃えのRTL

<input type="text" name="textbox" style="direction:RTL;"

そのイベントにアタッチするJavaScriptハンドラの書き込み:LEFTに「onkeyupの」、入力した文字のシフトを行い

function rtl(element) 
    { 
     if(element.setSelectionRange){ 
     element.setSelectionRange(0,0); 
    } 
    } 
    onkeyup="rtl(this); 

スニペットをチェックアウト

function rtl(element) 
 
{ 
 
    if(element.setSelectionRange){ 
 
     element.setSelectionRange(0,0); 
 
    } 
 
}
<input type="text" name="textbox" style="direction:RTL;" onkeyup="rtl(this);"/>

+0

各単語の右から左に移動するときの動作は多少なりとも必要ですが、英語の単語を逆にしたくありません。スタイル=「方向:RTL」を追加すると思いますそれが動作します。私は今試してみる。 –

+0

それはうまくいきませんでした。 –

関連する問題