如何获得循环自动完成值

时间:2014-04-21 07:19:36

标签: php jquery codeigniter

我在使用Codeigniter的模型中的PHP代码

$return_arr =array();
$new_row =array();

foreach($query->result_array() as $row) {
    $new_row['value'] = $row['test_type_name'];
    $this->db->select('*');
    $this->db->from('p_test');
    $this->db->where('test_type_name',$new_row['value']);
    $query_tt = $this->db->get();
    $i =0;

    foreach($query_tt->result_array() as $row_tt) {
        $i++;
        $new_row['test_name'.$i] = $row_tt['test_name'];
    }
    $new_row['inc_i'] = $i;
    array_push($return_arr,$new_row);
}
echo json_encode($return_arr);

我的jQuery代码

$('#p_test_name').keydown(function () { 
   var id_no_t = document.getElementById('id_no').value; 
   $(this).autocomplete({ 
       source: "<?php echo base_url(); ?>p_con/p_test_name/" + id_no_t, 
       minLength: 0, 
       autoFocus: true, 
       select: function (event, ui) 
       { 
          var tot_i = ui.item.inc_i;
          for (i = 1; i <= tot_i; i++) 
          { 
              var test_name = 'test_name'+i; 
                  test_name = ui.item.test_name; 
              $("#test_name"+i).val(test_name);
          }
       } 
    } 
  }); 
});

实际上我想用循环来获取价值。

如果我单独使用ui.item.test_name1,ui.item.test_name2 .......等没有循环。

然后Value变得完美,但是如果我像上面的代码那样使用循环,则值未定义。

请告诉我,如何解决?

1 个答案:

答案 0 :(得分:1)

您正在使用ui.item.test_name作为密钥的test_name。如果我正确理解您的问题,您愿意做的是使用test_name的值作为关键。试试这个:

for (i = 1; i <= tot_i; i++) 
{ 
    var test_name = 'test_name' + i; 
        test_name = ui.item[test_name];
    $("#test_name"+i).val(test_name);
}

对于ui.item['test_name1']的每个值,这应该有效地使用ui.item.test_name1或对象样式表示法i

另外在旁注中,您使用var关键字重新声明test_name。声明它一次很好,更好的代码可读性。只声明一次变量。