2012-07-27 69 views
2

我正在開發一個Web應用程序,我在一個jQuery UI UI組合框中顯示阿拉伯文字, 它在IE和Firefox中完美工作,但鉻顯示在單獨的方式單詞!阿拉伯字符分別顯示在谷歌鉻

screen shot from google chrome

,你可以看到兩個索尼之間的組合框和下拉列表

這裏的區別是我的元

<meta http-equiv="content-type" content="text/html";charset="utf-8" /> 

和數據使用整理存儲在SQL Server

+0

測試在Chrome 21beta(Win 7的)字سوني,無論是在正常的內容和'select'元素,採用宋體,我可以看到它正確顯示,有足夠的語境FO有效字母。您能否提供更多信息,例如說明問題的自包含文檔? – 2012-07-27 15:00:17

+0

我認爲錯誤是從我的鉻,我在jQuery用戶界面演示http://jqueryui.com/demos/autocomplete/#combobox 並配有獨立的字符相同的錯誤編輯的組合框(使用Chrome F12編輯器)!!如果你能做到這一點,並告訴我你的結果,將是爐排=) – 2012-07-27 15:24:30

+0

對不起..我仍然是一個計算器小白:$謝謝你的忠告 – 2012-07-28 14:42:51

回答

1

餘did't;) 在jQuery UI的組合框的JavaScript,你將有此功能

if (this.value && (!request.term || matcher.test(text))) return { 
             label: text.replace(
             new RegExp("(?![^&;]+;)(?!<[^<>]*)(" +  $.ui.autocomplete.escapeRegex(request.term) + ")(?![^<>]*>)(?![^&;]+;)", "gi"), "<span></span>"), 
             value: text, 
             option: this 
            }; 

我只是刪除了 「GI」 這樣的代碼是

if (this.value && (!request.term || matcher.test(text))) return { 
             label: text.replace(
             new RegExp("(?![^&;]+;)(?!<[^<>]*)(" +  $.ui.autocomplete.escapeRegex(request.term) + ")(?![^<>]*>)(?![^&;]+;)", ""), "<span></span>"), 
             value: text, 
             option: this 
            }; 

和它現在工作得很好:d

0

這取決於所使用的字體,而不是在字符集。

正如人們可以從截圖中看到甚至是「索尼」的拉丁變種略有不同(介意Y)。嘗試在兩種情況下使用相同的字體。

+0

我使用的是相同的字體「宋體」中的.ui-自動完成-input和.ui-autocomplete的區別是輸入是粗體我不知道如何更改字體我只是使用CSS但我無法更改jquery ui庫中的代碼 – 2012-07-27 14:26:04

2

看着你的評論,http://jqueryui.com/demos/autocomplete/#combobox在Chrome F12編輯提的頁面,似乎在這個瀏覽器,像foo一個jQuery產生的下拉列表元素出現,這樣每個字符是一個單獨的strong的元素:<strong>f</strong><strong>o</strong><strong>o</strong>。在Firefox中,我看到生成的select元素,而與<option>foo</option>。我想這取決於jQuery,它試圖適應瀏覽器的差異。

在任何情況下,像<strong>f</strong><strong>o</strong><strong>o</strong>這樣的標記雖然對拉丁字母表中的文本無害,但可能會使阿拉伯文字嚴重混亂,因爲它可能會使瀏覽器將每個字母視爲獨立字符,併爲其使用獨立字形。參看到問題Partially colored arabic word in HTML

我希望有人誰知道jQuery的以及能拿出一個建議,以解決這個問題。所有需要的是避免將<strong>f</strong><strong>o</strong><strong>o</strong>中的字母分開,僅使用<strong>foo</strong>(如果簡單的foo不會這樣做)。

+0

你是正確的在組合框中這裏是javascript函數 '(「+ $ .ui.autocomplete.escapeRegex(request.term)+」)(?![^ <>] *>)(?![^&;] +;)「,」gi「),」$ 1「), value:text, option:this };' 如果我們可以將$ 1轉換爲加入每個角色的另一個元素,那麼不幸的是&zwj沒有工作 – 2012-07-28 12:02:54