这是我的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>
请建议我做错了什么。
答案 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;
},
});
} );