2012-12-27 64 views
7

我正在尋找將rtl和ltr兩種語言放在textarea中的最優雅的解決方案:阿拉伯語和html一起。如何在textarea中動態應用嵌套的基本語言?

The standards說沒有用css來創建它:

direction: rtl; 
unicode-bidi: embed; 

這不工作對我來說,無論如何,作爲HTML具有嵌套的文本問題。阿拉伯語是正確的,但HTML被打破。

有沒有辦法動態地做到這一點?該標準希望添加一個嵌套的span標籤,但是由於用戶正在動態輸入這個標籤,我沒有檢測到每個字符的末尾都沒有看到。

回答

9

由於textarea的內容被視爲純文本,因此您不能使用任何span標記或其他任何標記,並且您不能將其任何部分設置爲與其餘部分不同(除第一行或第第一個字符,使用僞元素)。

但是,在純文本級別,可以使用控制字符強制執行雙向嵌入。假設您在元素上設置direction: rtl作爲一個整體(期望用戶以從右到左的語言輸入數據),用戶可以輸入U + 202A左對齊嵌入來輸入從左到右的文本,例如英語或HTML標記,然後結束它,通過輸入U + 202C POP DIRECTIONAL FORMATTING返回從右到左的模式。

由於大多數人不知道如何方便鍵入這些字符,如果有的話,你可以在網頁上爲他們的按鈕:

<textarea id=msg name=msg rows=10 cols=40> 
</textarea> 
<br> 
<button type=button onclick="append('\u202A')">→</button> 
<button type=button onclick="append('\u202C')">←</button> 
<script> 
var msg = document.getElementById('msg'); 
function append(ch) { 
    msg.innerHTML += ch; 
    msg.focus(); 
} 
</script> 
+0

但如何阿玲其位置向左? –

+0

@BerkerYüceer,你可以設置'text-align:left'。如果需要,您可以添加一個按鈕,通過更改此屬性來更改對齊方式。 –

+0

我想僅適用於啓動了ltr字符的行。 –