1

我为我的网站构建了一个动态填充的多选表单。当用户在第一次选择中选择一个或多个项目时,第二个是通过 jQuery 填充的。除了填充多选的顺序外,该表单工作正常。

例如,“产品”选择包含:

<select name="product_id" id="products" multiple="multiple">
<option value="#" selected="selected">Please Select</option>
<option value="1">Product 1</option>
<option value="5">Product 2</option>
<option value="4">Product 3</option>
<option value="6">Product 4</option>

(是的,这些值与产品编号不同)当用户选择其中一个时,jQuery 调用会填充下一个下拉列表。

<select name="version_id" id="versions" multiple="multiple">
<option value="100">3.0.7</option>
<option value="101">1.0.8</option>
<option value="102">12.0.1</option>

代码填充此选择并按“值”排序,有没有办法强制它按实际内容排序,例如将其更改为:

<option value="101">1.0.8</option>
<option value="100">3.0.7</option>
<option value="102">12.0.1</option>

我调用的成功代码是:

success: function(versions) 
{
$.each(versions,function(id,version) 
{
var opt = $('<option />'); 
opt.val(id);
opt.text(version);
$('#versions').append(opt); 
});
}

谢谢!

4

2 回答 2

1

感谢@deifwud 为我指明了正确的方向。最后,我在成功功能之后直接添加了以下内容。它根据文本而不是值对结果进行重新排序。

$("#versions").html($("#versions option").sort(function (a, b) {
return a.text == b.text ? 0 : a.text < b.text ? -1 : 1
}));
于 2012-04-16T10:04:59.260 回答
0

您必须对执行 sql 查询以动态生成下一个下拉框的文件进行 ajax 调用....如果是这种情况,那么您需要将关键字“ ASC”放在产生的选择查询的最后你的“ id”在价值属性<option value"">

于 2012-04-10T09:57:30.913 回答