【问题标题】:typeahead not showing any results for second input预输入未显示第二个输入的任何结果
【发布时间】: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


【解决方案1】:

您的浏览器可能不喜欢 TypeAhead 为自动完成元素自动添加的任何内容。尝试手动将autocomplete="off" 添加到您的第二个输入。您可以检查 TypeAhead 添加的内容 - 查看您的来源。它可能不适用于 FF,但可能适用于 Chrome。浏览器在这一点上很挑剔。

可以试试这个:

<input class="form-control" autocomplete="off" type="text" name="customer_id" id='card' onkeypress="myFunction1()" placeholder="Customer Name">

或者,尝试使用 autocomplete="false"。 Chrome 有时会拒绝“关闭”。

【讨论】:

  • 你好,我用过 Safari 和 Chrome 和 firefox,结果一样,是模块吗?有趣的是我得到了控制台中返回的值。我可以看到该值,但它没有被提示为自动完成
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-09
  • 2022-11-26
  • 1970-01-01
  • 2014-09-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多