如何从jquery自动完成获取键值

时间:2017-09-15 09:28:30

标签: php jquery cakephp autocomplete

这是我的HTML:

<div class="ui-widget col-lg-6 ">
<div class="form-group">
<label for="tags">Tags: </label>
<input name="parent_id" class="form-control" type="text" id="parent_id">    
</div>                
</div>

这是我用来获取值表单数据库的数组。我取了id和名字。但是当我提交数据时,它传递的是名称而不是id。如何提交密钥值即id。我正在使用cakephp 3.x.这是我的控制器功能。

 public function availableMembers() {
        $this->autoRender = false;
        if (!empty($this->request->query)) {
            $table = TableRegistry::get('FamilyMembers');
            $list = $table->find()->where(['first_name LIKE'=>'%'.$this->request->query['term'].'%'])->toArray();
            $arrList = array();
            foreach ($list as $row) {
            $arrList[$row['id']] = $row['first_name']." ".$row['last_name'];
            }    
        }
        echo json_encode($arrList);
        exit;
    }

这是我的剧本:

<script> 
  $( function() {
    $( "#parent_id" ).autocomplete({
      source: '/app/availableMembers',
    });
  } );
  </script>

请建议我做错了什么。

1 个答案:

答案 0 :(得分:0)

要获得jQuery自动完成工作,你的php应该返回一个带有2个属性的json对象:&#34; value&#34;和&#34;标签&#34;。 所以你需要这样的东西

$arrList[] = array( "label" => $row['first_name']." ".$row['last_name'], "value" => $row['id'] );

在你的javascript中你应该像这样设置id

$( function() { $( "#parent_id" ).autocomplete({ minLength : 2, source: '/app/availableMembers', select : function(event, ui) { //when we select something from the dropdown this.value = ui.item.label; return false; }, }); } );