我有一个列表框,由用户动态填充,其值由管道分隔值和名称组成。我使用密钥进行检查以确保相同的值不会被添加两次,但之后我想对剩余的列表进行排序。
我的JavaScript看起来像这样:
function storeaccount(name, account, accountName, Nom)
var count = 0;
var key = name + "|" + account + "|" + accountName + "|" + Nom;
var listBox = document.getelementbyid(listbox);
for(var i = 0; i < listBox.options.length; i++){
if(listBox.options[i].value == key)
{ count++;
}
}
if (count < 0) {
$('<%listbox.clientid%>')append('<option value="' + key + '"> + name + '</option>
}
我如何按名称对列表框进行排序,同时保持密钥完整无缺,以便在我的重复检查中使用jQuery?
答案 0 :(得分:1)
如果我是正确的,您希望按字母顺序对列表框进行排序。您还使用JS执行重复检查。
我会说,保留您已完成的所有操作,并在完成重复检查过程后在其上执行排序操作(如2个松散集成的过程)。
以下是对列表框执行排序的方式:
function SortList(listname) {
var $r = $(listname + " option");
$r.sort(function(a, b) {
return (a.value < b.value) ? -1 : (a.value > b.value) ? 1 : 0;
// if you do not have value attribute for option use the text value. Replace the above line of code with the one below.
//return (a.value < b.value) ? -1 : (a.value > b.value) ? 1 : 0;
});
$($r).remove();
$(listname).append($($r));
}
然后,调用函数:
SortList('#Id_Of_Listbox');
这是jsfiddle示例:http://jsfiddle.net/Kz2bg/2/