1
我將窗體保存爲一個json對象,當刷新或重新訪問頁面時,該窗體用於重建表單。它運作良好,除了我的問題是在名稱屬性之後用「[]」指定複選框。選擇名稱爲[]和值的複選框
我的目標:{"product":{"checkboxname":["value1","value2"]}}
// Reset form values from json object
$.each(formStateObjects[presentFormElementID], function(name, val){
var $el = $('[name="'+name+'"]');
var type = $el.attr('type');
switch(type){
case 'checkbox':
$el.attr('checked', 'checked'); // Only works for checkboxes with unique name
break;
case 'radio':
$el.filter('[value="'+val+'"]').attr('checked', 'checked');
break;
default:
$el.val(val);
}
});
我需要以某種方式改變我的複選框選擇,或使一個新的只爲共享名稱複選框。但我無法弄清楚如何。
----編輯:更新我的代碼------------------------------------- ----
我使用下面的代碼工作,雖然現在它不能確保檢查正確的名稱。
// Reset form values from json object
$.each(formStateObjects[presentFormElementID], function(name, val){
var $el = $("[name=" + name + "]");
var type = $el.attr('type');
// If we have a checkbox name with many values
if(val instanceof Array) {
checkboxArrayValues = val;
$.each(checkboxArrayValues, function(intValue, currentValue) {
// Refine the selector checking for name
var $hit = $("[value=" + currentValue + "]");
$hit.prop('checked', true);
});
}
switch(type){
case 'checkbox':
$el.prop('checked', true);
break;
case 'radio':
$el.filter('[value="'+val+'"]').prop("checked", true);
break;
default:
$el.val(val);
}
});
謝謝,但是當複選框的名字在名稱[]格式這是行不通的。 這是我的問題,對於每個複選框具有唯一名稱的複選框,代碼有效。 查看:http://jsfiddle.net/25Cn5/ –
@JohanDahl看到我的更新演示 –
是的,雖然感覺有風險,但現在它不再尋找完全匹配。請參閱:http://jsfiddle.net/kLyq3/ 我試着做這個完全匹配: var $ el2 = $(「[name =」+ name +'[]'+「]」); 但這不是一個有效的選擇器。 –