我有一個非常簡單的問題,涉及在文本區域中書寫。當我爲頁面設置dir = RTL並用英文書寫時,瀏覽器或textarea會像任何英文作者那樣從左向右書寫文字,但我希望它從右向左書寫文字。有人能幫助我嗎?如何在文本區域中從右向左書寫英文
預先感謝您。
當前的行爲: بشم測試[這]دجاج
預期的行爲: بشم[這]測試دجاج
注:我從右寫到左
我有一個非常簡單的問題,涉及在文本區域中書寫。當我爲頁面設置dir = RTL並用英文書寫時,瀏覽器或textarea會像任何英文作者那樣從左向右書寫文字,但我希望它從右向左書寫文字。有人能幫助我嗎?如何在文本區域中從右向左書寫英文
預先感謝您。
當前的行爲: بشم測試[這]دجاج
預期的行爲: بشم[這]測試دجاج
注:我從右寫到左
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字符。
謝謝你真的保存了一天:D –
<textarea dir="rtl">
</textarea>
我試過這個,但它不起作用 –
您需要做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);"/>
當你從右向左移動每個單詞時的行爲有點我想要,但我不想扭轉英文單詞。我想如果我添加style =「direction:RTL;」它會工作。我現在會嘗試。 –
好吧,它沒有工作。 –
英語不是RTL語言。這沒有任何意義。 – Quentin
''?或者你想尊重打字? –
當我輸入阿拉伯語和英語時,它會正確地從右向左移動,但是當我連續寫兩個英語單詞時,它會將它們寫入右側,同時我希望它們的行爲與阿拉伯語/希伯來語書寫方向類似。 –