2013-01-08 48 views
2

我創建這樣一個列表框在同一行多個值,並創建了一個標題欄,這有助於排序數據:排序在Javascript中選擇選項 - 基於

ID     Name 
------------------------------------------------------------ 
ID1    Identity One 
ID2    Identity Two 
ID3    Identity Three 
ID4    Identity Four 
------------------------------------------------------------- 

我有一個要求,上述排序基於ID和名稱的列表,意味着當用戶點擊ID時,應該根據ID對列表進行排序,反之亦然。但問題是,從數據層我們得到這樣的一行:

ID1   &nbsp:Idenitity One 

因此,我們在打印選項標籤相同,獲得輸出像上面。代碼生成上面的輸出是:

<select id="selSort" size="10" style="width:350px" id="rpt"> 
<option value = "ID1"> 
     ID1 &nbsp; &nbsp; Identity One 
</option> 
<option value = "ID2"> 
     ID2 &nbsp; &nbsp; Identity Two 
</option> 
<option value = "ID4"> 
     ID4 &nbsp; &nbsp; Identity Four 
</option> 
<option value = "ID3"> 
     ID3 &nbsp; &nbsp; Identity Three 
</option> 

我的問題是我如何實施上述方案分類設施?是的,我試圖排序,但它是整理列表框,而不是基於單個值。至少現在我可以做什麼格式化傳入數據,以便將所有Ids放在一個數組中,並將名稱放在另一個數組中,因此對此的所有指南/指針都表示讚賞。請讓我知道,如果我沒有解釋清楚

編輯:

代碼我試圖排序列表框

function sortSelect(selElem) { 
    var tmpAry = new Array(); 
    for (var i=0;i<selElem.options.length;i++) { 
     tmpAry[i] = new Array(); 
     tmpAry[i][0] = selElem.options[i].text; 
     tmpAry[i][1] = selElem.options[i].value; 
    } 
    tmpAry.sort(); 
    while (selElem.options.length > 0) { 
     selElem.options[0] = null; 
    } 
    for (var i=0;i<tmpAry.length;i++) { 
     var op = new Option(tmpAry[i][0], tmpAry[i][1]); 
     selElem.options[i] = op; 
    } 
    return; 
} 
+0

你能請上傳您已經嘗試什麼'我試圖排序,但排序整個列表box' –

+0

@BalaKrishnan,我貼的代碼 –

+0

你排序,在按一下按鈕?或一些自定義標題點擊? –

回答

3

您可以使用自定義數組排序先來看看這個How to sort select base on an id ?

這裏的想法只是創建基於其價值比動態地創建基於排序值的選項arrray和排序。

自定義排序代碼

source.sort(function (x, y) { 
    if (isAsc) 
    return y.id - x.id; 
    else 
    return x.id - y.id; 
}); 
+0

非常感謝您的幫助,但我忘了提的是,我們沒有使用jQuery的東西... :( –

+1

@PradeepSimha,分揀部分僅在JS,我只是用的JQuery只查詢元素,所以你可以使用它。 –