2012-12-17 304 views
1

我已經使用下面的代碼來保留刷新頁面時下拉菜單的選擇。保留複選框狀態

$("#form_Selection > option").each(function() { 
    if (this.value == 'variable') { 
     this.selected=true; 
    } 
}); 

我很難配置類似的代碼,刷新後將保留複選框的狀態。有任何想法嗎?

+1

對於菜單,是不是'$(#form_Selection).VAL(可變)'更簡單? – Barmar

+0

我在PHP中完成此操作的方式是將所有選項保存在數組中,如果選中(在$ _GET或$ _POST變量中),我將該選項放在頂部,因爲第一個選項出現在select框。 – bozdoz

+0

此外,我可能會將該值另存爲帶有ajax的SESSION變量,並在提交表單後取消設置會話變量(如果需要) – bozdoz

回答

1

{if (this.value == 'variable') {this.checked="checked";}} 
+1

'checked'屬性是一個布爾值而不是字符串。 – MrCode

1

如何將下面的工作(我還沒有重新打印您的代碼的邏輯部分,只需設置複選框 $(this).attr('checked', true);

+0

您應該實際使用.prop而不是.attr,如下面是@AlexStack。 –

0

用於將所有的複選框的狀態使用:checkboxprop('checked'),您可以使用sessionStorage

$(':checkbox').each(function(index,element){ 
    //save the 'checked' property of every checkbox 
    if ($(this).prop('checked')) { 
     sessionStorage['checked-checkboxes']=sessionStorage['checked-checkboxes'] + ','; 
    } 
} 

然後磨片n中的頁面加載:

var checkedCheckboxes = sessionStorage['checked-checkboxes']; 
//if there's anything saved in the sessionStorage for checked checkboxes 
if (checkedCheckboxes) { 
    var checkedCheckboxesNames = checkedCheckboxes.split(','); 
    for(var i=0; i < checkedCheckboxesNames; i++) { 
     $('#' + checkedCheckboxesNames[i]).prop('checked', true); 
    } 
} 

的想法很簡單:保存時,保存它保存在所有複選框的ID,並加載時,立刻獲得所有這些ID和設置的複選框。

當然,如果您想要永久存儲,您可以用localStorage代替sessionStorage。請注意:

  • 所有複選框都必須有一個id用這個算法來標識。
  • 存儲中不應該有任何其他變量使用相同的密鑰(前綴可用於消除副作用)。

我希望它能幫助:)