2013-03-18 42 views
3

我來自突尼斯,目前正在開發名爲PHPFOX的PHP腳本。其中,我想集成一個能夠自動更改TextBox的文本方向的功能。具體來說,當你去Facebook並想發表評論時,TextBox的輸入方向將根據你選擇的鍵盤方向而改變。Facebook帖子中的RTL文本重新排序單詞

換句話說,如果您爲鍵盤選擇了阿拉伯語,TextBox自動設置爲RTL方向。

這裏是我使用至今代碼:

$('input').keyup(function() { 
    $this = $(this); 
    if ($this.val().length == 1) { 
     var x = new RegExp("[\x00-\x80]+"); // ASCII 
     //alert(x.test($this.val())); 

     var isAscii = x.test($this.val()); 
     if(isAscii) { 
      $this.css("direction", "ltr"); 
     } else { 
      $this.css("direction", "rtl"); 
     } 
    } 
}); 

一切正常輸入。然而,看看會發生什麼,當我輸入的混合LTRRTL句話在我的網站,然後將其發佈到Facebook的:

這是我進入:

Input

這裏是在Facebook上顯示的內容:

Result

看到區別?我該如何解決這個問題?

+0

如果我的答案對您有幫助,請考慮將其標記爲「接受」,方法是單擊其分數下方的小複選框。如果沒有,請讓我知道你需要什麼進一步的信息,所以我可以幫助你更多。 – 2013-05-16 19:42:55

回答

1

首先 - 你採取的方法是輝煌的,我讚賞你。通過CSS切換<input>的方向以允許自然打字具有很大的意義。

你的OUTPUT奇怪地出現的原因是由於你發送給Facebook的生成內容。我的猜測是,由於文本的最後幾個字符在RTL中,所以您輸入的CSS仍然設置爲RTL。

考慮這個例子(結果可以蜂看出here):由於第二<span>顯示具有dir="rtl"

<div> 
<b>LTR:</b> <span dir="ltr">This is some الفبای فارسی text</span> 
<br /><br /> 
<b>RTL:</b> <span dir="rtl">This is some الفبای فارسی text</span> 
</div> 

,文本捲起得到重新排序,以作爲一個單一的RTL「經處理的各LTR短語字」。

Example

你可能會考慮哪些努力,在你的例子,僅僅是確保前提交後,您將CSS方向回LTR,這將產生的結果我想你」重新尋找。

如果您有興趣,這裏是一個blog post討論HTML和Plain-Text樣式呈現LTRRTL文本之間的區別。它沒有提供任何答案,但會指出有關問題本身的更多細節。

+0

此視頻可以解釋更多 [link](http://www.youtube.com/watch?v=y7kJAKr4mvo) – 2013-05-11 10:33:16