【发布时间】:2019-01-01 19:17:08
【问题描述】:
我将 Typeahead 用于两个输入,我让它适用于第一个输入,但它不适用于第二个输入,我不确定这里有什么问题以及为什么它不起作用,我已经更改了 ID和一切,但请求根本没有显示任何细节。
这是我的 create.blade.php
@csrf
<div class="col-xs-12 col-sm-12 col-md-12">
<div class="form-group">
<strong>Customer Name:</strong>
<input class="form-control" autocomplete="off" type="text" name="customer_id" id='cust' onkeypress="myFunction()" placeholder="Customer Name">
</div>
<div class="form-group">
<strong>Card Number:</strong>
<input class="form-control" type="text" name="customer_id" id='card' onkeypress="myFunction1()" placeholder="Customer Name">
</div>
<script>
function myFunction()
{
var path = "{{ route('autocomplete') }}";
$('#cust').typeahead({
name: 'cust',
source: function (query, process) {
return $.get(path, { query: query }, function (data) {
return process(data);
});
}
});
}
function myFunction1()
{
var path = "{{ route('autocompletecard') }}";
$('#card').typeahead({
name: 'card',
source: function (query, process) {
return $.get(path, { query: query }, function (data) {
return process(data);
});
}
});
}
</script>
控制器:
public function autocomplete(Request $request)
{
$data = Customer::select("name")
->where("name","LIKE","%{$request->input('query')}%")
->get();
return response()->json($data);
}
public function autocompletecard(Request $request)
{
$data = Card::select("cardno")
->where("cardno","LIKE","%{$request->input('query')}%")
->get();
return response()->json($data);
}
web.php:
Route::get('autocomplete', 'AssigneeController@autocomplete')->name('autocomplete');
Route::get('autocompletecard', 'AssigneeController@autocompletecard')->name('autocompletecard');
【问题讨论】:
-
假设错误来自
html标签,所以让我们复制它但只更改id,保持相同的功能然后测试它。所以唯一的区别是标签的ID!请发布您在测试后得到的结果。附言我们可能需要多次尝试才能让它发挥作用。 -
我开始认为错误来自模型本身。因为在控制器中将类从 Customer 更改为 Card 时,我只会在控制台上返回结果,但不会在自动完成中提示
-
我已将列名从“cardno”更改为“name”,但它起作用了。
-
听起来好像有什么东西踩到了变量上。很高兴你成功了。
标签: javascript ajax laravel typeahead.js