2014-09-03 64 views
0

我有一個窗口,它具有下拉列表和一個HTML表格,其中根據在下拉列表中進行的選擇來填充表格行。一旦表填充完畢,用戶點擊每一行進行選擇並點擊「確定」按鈕。用戶也可以根據需要選擇三行中的兩行。爲一個表中的選定行設置唯一ID以存儲在localStorage中

$('.ok').bind('click', function() { 
    if (somecondition) { 
     //some process 
    } 
    $("#selectedTblDiv tr:selected").each(function(index,row) { 
     fnMatch($(row).find(("td:first").html())); 
     localStorage.setItem("test-" + index, $(row).find(("td:first").html())); 
    }); 
    fnDialogClose(); 
}); 

這裏我已存儲的每一行的第一個元素中的localStorage具有唯一ID:一旦「OK」按鈕被點擊我使用下面的代碼,並且還預成型件的一些動作如下存儲在localStorage的選擇的行。雖然我在檢索頁面刷新同我做了以下過程:

function fnDisplay() { 
    //some code to open dialog 
    for (var i = 0; i < localStorage.length; i++) { 
     //some code and process 
     var $select = $("#list_button"); 
     for (var j = 0; j < localStorage.length; j++) { 
      if (localStorage.getItem("test-" + j)){ 
       var t = localStorage.getItem("test-" + j); 
       if (t == prevIDs) { 
        $("#list_button > option").each(function() { 
         if (this.text == prevIDs) { 
          $(this).remove(); 
         } 
        }); 
        $('<option>').text(prevIDs).attr("disabled", true).appendTo($select); 
       } 
      } 
     } 
    } 
} 

這裏基本上fnDisplay()打開一個窗口,一些過程下拉列表中填充。並從列表中選擇用戶選擇,並將詳細信息填充到HTML表格中。「確定」選項可執行一些操作,並將用戶選擇的表格存儲在localStorage中。

再次,當用戶打開窗口時,下拉菜單中的項目被禁用,這些項目先前已從表中選擇。但是沒有從下拉菜單中選擇的項目仍然可以選擇。

我的問題是:

下拉列表中有

10023 
10024 
10025 

用戶選擇10023和10024,以便HTML表格填入如下:

HTML表格

vehID Name Place  Summary 
----- ---- -----  ------- 
10023 car  blore 4-wheeler 
10024 bike pune  2 wheeler 

現在用戶選擇行10023和10024並點擊「確定」。 現在窗口關閉並重新打開,所以我的下拉看起來followss

10023 //disabled 
10024 //disabled 
10025 //enabled 

和我的HTML表是空的。

現在用戶有條款選擇未選擇的值。即10025 現在選擇10025並填充HTML,並單擊相同的行選擇和「確定」按鈕。 現在,當用戶重新加載窗口,我希望所有選項在下拉菜單中被禁用,因爲所有選項都被選中。但由於localStorage基於行選擇,因此在選擇新值時覆蓋存儲的值。儘管我已經給出了每行的唯一ID,但是

localStorage.setItem("test-"+index,somethin); 

當選擇新行時,索引的值再次設置爲0。所以,我的下拉列表看起來像這樣

10023 //enabled 
10024 //disabled 
10025 //disabled 

因此,這裏是10025上覆蓋10023.如何通過提供一個唯一的ID給每個解決這個問題?

+2

你的第一JS碼塊被破壞(缺少')後''」 .ok''並且也是'});'在端部)和非常雜亂。請使用http://jsbeautifier.org/使這更容易閱讀 – CodingIntrigue 2014-09-03 08:43:08

+0

是的所有都是輸入錯誤。對不起,現在已完成更改。 – user3201640 2014-09-03 08:45:53

+2

您是否意識到您發佈的代碼充滿了語法錯誤?一個工作演示例如[jsfiddle](http://jsfiddle.net)將有助於那些試圖幫助你。 – 2014-09-03 08:50:25

回答

2

問題是,您要分別保存每個選定的項目,導致現有項目在添加新項目時被覆蓋。您可以在localStorage中存儲一組物品。當您添加新項目時,您可以檢索數組並將新項目推入該項目。沿着下面的內容:

var items = JSON.parse(localStorage.getItem("items")) || []; 
$("#selectedTblDiv tr:selected").each(function (index, row) { 
    items.push($(row).find(("td:first").html())); 
}); 
localStorage.setItem("items", JSON.stringify(items)); 
+0

太棒了!有效。萬分感謝。 – user3201640 2014-09-04 05:02:11

相關問題