2016-09-29 134 views
1

我有一個非常簡單的問題,涉及在文本區域中書寫。當我爲頁面設置dir = RTL並用英文書寫時,瀏覽器或textarea會像任何英文作者那樣從左向右書寫文字,但我希望它從右向左書寫文字。有人能幫助我嗎?如何在文本區域中從右向左書寫英文

預先感謝您。

當前的行爲: بشم測試[這]دجاج

預期的行爲: بشم[這]測試دجاج

注:我從右寫到左

+0

英語不是RTL語言。這沒有任何意義。 – Quentin

+0

''?或者你想尊重打字? –

+0

當我輸入阿拉伯語和英語時,它會正確地從右向左移動,但是當我連續寫兩個英語單詞時,它會將它們寫入右側,同時我希望它們的行爲與阿拉伯語/希伯來語書寫方向類似。 –

回答

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處理,將附加到事件:「的onkeyup」,它執行所輸入的字符的給LEFT

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

當你從右向左移動每個單詞時的行爲有點我想要,但我不想扭轉英文單詞。我想如果我添加style =「direction:RTL;」它會工作。我現在會嘗試。 –

+0

好吧,它沒有工作。 –

相關問題