我正在对城市的输入框使用jquery自动完成功能,但是当我发送输入时,它会发送所选城市的名称而不是ID,我如何发送ID但在使用自动完成功能时仍显示名称?
所以从本质上讲,我希望自动完成功能像这样:
<-option value =“ {{$ city-> id}}”> {{city-> name}} <-/ option->
这是我当前的代码:
HTML:
discord.User
PHP(Laravel):
<div class="search-homepage-input">
{!! Form::open(['route' => 'search.index', 'method' => 'GET']) !!}
<div class="col-md-9">
{!! Form::text('city', null, array('class' => 'form-control', 'maxlength' =>'55', 'placeholder' => 'Eg. England, London, Manchester', 'id' => 'sl')) !!}
</div>
<div class="col-md-3">
{!! Form::submit('Find Teams', array('class' => 'btn btn-homepage')) !!}
</div>
{!! Form::close() !!}
</div>
JS:
public function autoComplete(Request $request){
$query = $request->term;
$res = City::where('name', 'LIKE', "%$query%")->orderBy('name')->paginate(5);
foreach($res as $cities ){
$usersArray[] = $cities->name;
}
return response()->json($usersArray);
}
答案 0 :(得分:1)
我认为您想执行以下操作:
public function autoComplete(Request $request){
$query = $request->term;
$res = City::where('name', 'LIKE', "%$query%")->orderBy('name')->paginate(5);
foreach($res as $cities ){
$usersArray[] = array(
"label" => $cities->name,
"value" => $cities->id
);
}
return response()->json($usersArray);
}
查看以下页面:http://api.jqueryui.com/autocomplete/#option-source
数组:
array
可以用于本地数据。支持两种格式:
- 字符串数组:
[ "Choice1", "Choice2" ]
- 具有标签和值属性的对象数组:
[ { label: "Choice1", value: "value1" }, ... ]
所以您想返回JSON,如:
Array [
Object {
"label": "City",
"value": id
}
];
希望有帮助。
更新
用户进行选择时,它使用select
回调。在上面的示例中,显示了label
,用户选择了它。然后,将value
属性设置为所选项目的value
。可以在此处看到:http://jqueryui.com/autocomplete/#custom-data
使用您的自动填充代码,看起来可能像这样:
HTML
<div class="search-homepage-input">
{!! Form::open(['route' => 'search.index', 'method' => 'GET']) !!}
<div class="col-md-9">
{!! Form::text('city-name', null, array('class' => 'form-control', 'maxlength' =>'55', 'placeholder' => 'Eg. England, London, Manchester', 'id' => 'sl-label')) !!}
{!! Form::text('city-id', null, array('class' => 'form-control', 'id' => 'sl-id', 'style' => 'display: none;') !!}
</div>
<div class="col-md-3">
{!! Form::submit('Find Teams', array('class' => 'btn btn-homepage')) !!}
</div>
{!! Form::close() !!}
</div>
JavaScript
$('#sl').autocomplete({
source: "/autocomplete",
focus: function(event, ui) {
$("#sl-label").val(ui.item.label);
return false;
},
select: function(event, ui) {
$("#sl-label").val(ui.item.label);
$("#sl-id").val(ui.item.value);
return false;
}
});
通过这种方式,您可以收集要用于搜索的ID。