Google Chrome下拉列表选项排序似乎不正确

时间:2010-02-17 05:55:51

标签: browser google-chrome

我正在使用以下代码在我的一个表单中呈现一个选择框,当我检查时,我可以在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>

任何人都请为此提出解决方案吗?

2 个答案:

答案 0 :(得分:3)

这不是一个真正的好习惯,但是......

如果您为值添加空格,则chrome不会将值视为数字,也不会按值对其进行排序。

示例:

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

好的一面是你不必像有人建议的那样添加然后从ID中删除字母字符(不记得是否在这个或其他有类似问题的帖子中),你可以很容易地修剪它但是大多数时候空间被忽略,如果你发布或将它们发送到另一个文件,他们只会看到整数值而不是空格。

答案 1 :(得分: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(''));

似乎chrome不支持整数作为属性名称,或者按键而不是值排序。无论数据的价值如何

由于我的大多数数组都是num =&gt;数据关联数组,因此背面很痛苦。

请访问http://code.google.com/p/chromium/issues/detail?id=12169获取解释,仍在寻找解决方法/修复方法。

这不是在FF或基于webkit的safari中做到的。 尝试使用PC和MAC chrome并遇到同样的问题。

我想的另一个选择是在服务器端呈现HTML,只需使用你的JS将数据存入..标签,而不是生成客户端。

<强> [更新] 请参阅Google Chrome: JavaScript associative arrays, evaluated out of sequence以获得良好的答案

[编辑2013] 显然,这仍然不是fixed根据ECMAScript标准这是有效的行为,但并不是人们会“期望”它的表现。您是否使用chosen.js来帮助您解决问题。