2010-02-17 107 views
2

我使用下面的代碼呈現在我的表單中的一個選擇框,當我檢查,我可以看到下面的代碼在Firefox谷歌瀏覽器下拉列表中選擇排序似乎是不正確

<select name="make"> 
    <option value="13501">Jeep</option> 
    <option value="26838">Joyner</option> 
    <option value="13658">Kia</option> 
    <option value="13898">Lada</option> 
</select> 

但在鉻當我檢查我可以看到的形式元素

<select name="make"> 
    <option value="13501">Jeep</option> 
    <option value="13658">Kia</option> 
    <option value="13898">Lada</option> 
    <option value="26838">Joyner</option> 
</select> 

任何人都請爲此提出解決方案?

+0

我無法弄清楚在我的Chrome中訂購的任何錯誤。 – rahul 2010-02-17 05:59:43

+0

使用jsbin和Chromium無法複製4.0.242.0 – 2010-02-17 06:00:35

+0

請發佈您用於創建選擇列表而不是正在呈現的代碼的代碼 – 2010-02-17 06:00:49

回答

2

這也發生在我身上。與下面的客戶端JS:

var data=incoming_json_assoc_array_of_counties_sorted_alphabetically_by_county //eg 47=>"west midlands" 
    for (key in data) { 
     options.push('<option value="' + key + '">' + data[key]+ '</option>'); 
    } 
    $('#county_id').val(options.join('')); 

看來鉻不會支持整數作爲屬性名稱或將按鍵而不是值排序。不考慮數據的價值

這是背後的痛苦,因爲我的大部分數組都是num =>數據assoc數組。

請訪問http://code.google.com/p/chromium/issues/detail?id=12169獲取解釋,仍在尋找解決方法。

這不是在FF甚至是基於webkit的Safari瀏覽器中。 在PC和MAC鍍鉻上嘗試並獲得相同的問題。

我想其他的選擇是在服務器端渲染HTML,並使用JS將數據插入到..標籤中,而不是生成客戶端。

[更新] 看到Google Chrome: JavaScript associative arrays, evaluated out of sequence良好的堅實答案

[編輯2013] Apperently這依然沒有得到fixed它是有效的根據ECMAScript的標準行爲,但它不是一個會怎樣「期待'它的行爲。你有沒有使用chosen.js這可以幫助你得到的問題。

3

這不是一個真正的好做法,但...

如果添加一個空格值鉻不會考慮值的號碼,並不會按值排序。

例子:

<select> 
    <option value=" 3">Third</option> 
    <option value=" 1">First</option> 
    <option value=" 2">Second</option> 
</select> 

好的一面是,你有沒有添加,然後像有人建議從ID刪除字母字符(不記得是否在這個或其他崗位有類似的問題),你可以很容易地修剪它,但大部分時間空間被忽略,如果你發佈或者將它們轉移到另一個文件,他們只會看到整數值而不是空間。