3

我正在使用一些包含<textarea>的HTML。目前,我正在測試混合LTRRTL的字符的輸入,例如"abcأبجABC"HTML中的RTL(從右到左)鍵盤導航<TextArea>

<div class="mycomment" dir="RTL"> 
    <form method="get" action="{$self}"> 
    <input type="hidden" name="Id" value="{$entry}" /> 
    <textarea name="comment" class="commentarea"/></textarea> 
    <br /> 
    <input class="button" type="submit" value="{$postlink}" /> 
    </form> 
</div> 

字符串的顯示是正確的,當在RTL模式,然而,鍵盤導航不正確。具體來說,在通過英文和阿拉伯文字符串部分時,它不遵循正確的順序。

任何想法,我可能會繞過或修復這個問題?

+0

下面是代碼:


dojomedojo 2010-07-28 20:11:18

+0

這是一件應該在瀏覽器級別的支持? 謝謝。 – dojomedojo 2010-07-28 20:23:37

回答

0

其實你不能這樣做。 作爲一個希伯來語的人,我可以告訴你,在這方面有很多問題,特別是當你混合使用RTL和LTR語言或有時數字。 沒有什麼可以做的。有時瀏覽器可以處理它,有時它不能。 例如在Chrome中使用Ctrl鍵在希伯來語文本中走得更快時,右鍵和左鍵的方向會改變爲相反。

1

不幸的是,根據規範,鍵盤導航可能是「正確的」。當試圖通過混合方向字運行時,鍵盤快捷方式如Ctrl + >,要根據字符在當前位置下的方向性跳轉,開始改變方向 - 而不是處理整個字符串從導航角度看是單向的。

儘管如此,當您考慮計算機在輸入混合模式句子時如何解釋所有其他按鍵時,這是可以理解的。

如果您開始輸入LTR個字符,則您預計它們將從左到右移動(隨後的每個字符都顯示在最後一個字符的右側)。但是,如果您開始輸入RTL個字符,則會期望它們從右向左行進(每個後續字符都顯示在最後一個字符的左側)。

認爲它是這樣的:

按Ctrl +>並不意味着 「向右走一個字」 - 這意味着 「轉到下一」。在RTL環境下,下一個字是 - 所以鍵盤跳你那個方向。

接着,在本質上,涉及其中字節在存儲器被保持,而不是與其中字符被顯示在屏幕上的順序的順序。無論單詞是從屏幕的右側還是左側開始,字符都會按順序保存在內存中,從單詞的開頭開始,到單詞的結尾結束。

換句話說:Ctrl鍵 + >行進字節順序,而不是顯示順序

所以 - 回你如何克服它的問題...

除非你寫一些相當複雜的JavaScript(其中包含了一系列的挑戰和麻煩),以改變方式的鍵盤導航工程在你的盒子裏,沒有什麼好的方法來「修復」它。但是,你可以試試下面的替代品,如果你覺得它會產生負面的影響的客戶:

  1. 提供培訓。瞭解古怪的鍵盤技巧,並教你的用戶。 (我知道,我知道,很多工作,你可能沒有時間/預算)。
  2. 相信你的用戶。如果您的用戶在應用程序中輸入了混合的LTRRTL文本,那麼這也是他們在其他應用程序中定期執行的操作。這意味着他們可能習慣了這套問題,因爲它是一個標準問題集。如果他們做了很多 - 他們可能已經有他們習慣的解決方法 - 並且您更改它到修復它可能實際上傷害他們的生產力。
  3. 記錄它提交功能請求。如果您認爲這是給定的瀏覽器供應商(如Microsoft)應以不同方式實施,請在其用戶社區中積極行事並推送更新,修補程序和功能增補。這就是軟件世界變得越來越好的原因 - 它不會僅僅在組織上,或者更糟糕的是,成爲變更代理的負擔。