2013-07-16 90 views
0

我有一個由用戶動態填充的列表框,其值由管道分隔值和名稱組成。我使用該鍵進行檢查以確保不會兩次添加相同的值,但在此之後,我想對剩餘列表進行排序。對動態填充的列表框進行排序

我的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

你的代碼將永遠不會進入這種情況'if(count <0){'你的計數是'0'還是大於'0'...並且你能否澄清你的問題 –

+0

對不起,這意味着要說<1,我已經很快重新輸入了該位,它可以正常工作,對如何排序有任何評論?謝謝 – APW

+0

你不能使用JS sort()方法嗎? – Learner

回答

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/

+0

是的,這是我想要做的,所以我把它從我的例子通過ListBox到你的函數Sortist – APW

+0

是的,只是將你的列表框的ID傳遞給函數。答案已更新。 – Learner

+0

不幸的是,似乎不適合我?它調用該方法,並且成功運行,但是之後我的列表未被排序。我試圖通過使用調試器,但它潛入到一個JQuery庫,我不能跟隨什麼 – APW