我有以下功能,我试图填写具有指定ID的表单。
function input_form(form, data_array)
{
$.each(data_array, function(key, value){
//alert(key + " = " + value);
$(form).find('input[name="'+key+'"]').each(function()
{
switch(this.type)
{
case 'select-one':
case 'select-multiple':
$('input[name="'+key+'"] value:contains("'+value+'")').attr('selected','selected');
break;
case 'password':
case 'text':
case 'textarea':
//alert(key + " = " + value);
$('input[name="'+key+'"]').val(value);
break;
case 'checkbox':
case 'radio':
$('input[name="'+key+'"] value:name("'+value+'")').attr('checked','checked');
//this.checked = true;
}
});
});
}
我有以下问题:
它填写文本框很好,但不适用于收音机和复选框。
我有另一个具有相同名称值的表单,即使表单具有不同的ID,它也会填写该表单。
var form ='#form1'
var data_array =键是要由值填充的表单的名称值。
任何人都可以看到我出错的地方或者是否有任何其他问题。
感谢。
解
感谢Matt BAll提供更清晰的代码。我编辑了收音机和复选框,因为它选择了最后一个收音机而不是实际选择的收音机。
function input_form(form, data_array)
{
$.each(data_array, function(key, value){
//alert(key + " = " + value);
$(form).find('input[name="'+key+'"]').each(function()
{
var $this = $(this);
switch(this.type)
{
case 'select-one':
case 'select-multiple':
$this.attr('selected', true);
break;
case 'password':
case 'text':
case 'textarea':
$this.val(value);
break;
case 'checkbox':
case 'radio':
//
if($(this).val() == value)
{
this.checked = true;
}
}
});
});
}
答案 0 :(得分:1)
尝试使用此尺寸。
function input_form(form, data_array)
{
$.each(data_array, function(key, value){
//alert(key + " = " + value);
$(form).find('input[name="'+key+'"]').each(function()
{
var $this = $(this);
switch(this.type)
{
case 'select-one':
case 'select-multiple':
$this.attr('selected', true);
break;
case 'password':
case 'text':
case 'textarea':
$this.val(value);
break;
case 'checkbox':
case 'radio':
this.checked = true;
}
});
});
}