2011-05-26 31 views
0

我有下面的函数,我试图用指定的ID填写表单。jQuery填写表单与数据表单数组问题

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; 
     } 
    }); 
}); 
} 

我有以下问题:

  1. 它填补了文本框罚款,但不工作的收音机和复选框。

  2. 我有另一种形式具有相同的名称值,它也填写该表格即使表格具有不同的ID。

变种形式= '#form1中'

VAR data_array中=键是由值来填充在表单的名称的值。

任何人都可以看到我要去哪里出错或者它有什么问题。

谢谢。

SOLUTION

感谢马特球更清晰的代码。我编辑了收音机和复选框,因为它选择了最后一个收音机而不是实际选定的收音机。

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; 
        } 
      } 
     }); 
    }); 
} 

回答

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; 
      } 
     }); 
    }); 
} 
+0

感谢您为收音机和复选框编辑的更干净的代码(请参阅我的文章)。 – jonny 2011-05-26 23:37:58

+0

那么问题就解决了吗? – 2011-05-26 23:41:41