如何使用Jquery将自动intellisense添加到文本框中

问题描述 投票:2回答:3

我想将自动智能感知(自动完成 - 过滤搜索结果)添加到文本框,对应于我在该文本框中键入的单词,并从数据库表中获取智能感知。我怎样才能做到这一点?有人可以帮忙吗?

这是我的jQuery代码:

$(document).ready(function() {

        $('#city').autocomplete({
            source:'send.php'

        });
});

send.php文件如下:

$link=mysqli_connect("localhost","hari","123","hari");

$searchTerm = $_GET['query'];  //get search term


$query = $db->query("SELECT fname FROM user WHERE fname LIKE 
         '%".$searchTerm."%' ORDER BY fname ASC");  //get matched data from user table

while ($row = $query->fetch_assoc()) {
        $data[] = $row['fname'];
}

echo json_encode($data);//return json data

相应的HTML代码如下:

<div class="content col-sm-12">
   <form>
      <h1>Hello!!!</h1>
      <input type="text" id="city" name="city" size="20" class="city" 
             placeholder="Please Enter City or ZIP code"><br><br>    
   </form>
</div>
javascript php jquery html
3个回答
1
投票

您必须在html页面中包含以下脚本

<script src="//code.jquery.com/jquery-1.10.2.js"></script>
<script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>

并在你的HTML头部添加以下css

<link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">

您犯的错误是传递名称为term的参数,并尝试在您的php文件中使用名称query进行读取。在send.php文件中更改行

$searchTerm = $_GET['query'];

$searchTerm = $_GET['term'];

0
投票

试试这个:

$(document).ready(function() {

        $('#city').autocomplete({
            source: function( request, response ) {
                      $.ajax( {
                               url: "send.php",
                               dataType: "jsonp",
                               data: {
                                    query: request.term
                               },
                              success: function( data ) {
                                   response( data );
                              }
                      } );
                    },

        });
});

0
投票

我有一个推荐给你,使用angular 1,你可以简单地编写代码而无需额外的UI库,并且具有更好的性能和无问题的解决方案。

  1. 将以下父div添加到input元素:
  2. 将您的输入更改为:

<input type="text" id="city" name="city" size="20" class="city" ng-model="query" ng-change="fetch()" placeholder="Please Enter City or ZIP code">

  1. <input>下面添加以下代码: <ul> <li ng-repeat="text in suggestions">{{ text }}</li> </ul>
  2. 作为一个基本设置,你需要在<head>部分:

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js"></script>

  1. 最后,您将在资产目录中创建一个新资源,如资产目录中的“suggestions.js”,或者在某个地方创建一个新文件,并在模板中添加此文件之前添加此文件,如下所示:</body>标记:

<script src="assets/suggestions.js"></script>

该文件将包含以下行:

    var app = angular.module('myApp', []);
    app.controller('suggestionsCtrl', function($scope, $http) {

        $scope.suggestions = [];
        $scope.query = '';

        $scope.fetch = function() {
          $http({method: 'POST', url: 'send.php', params: { query: $scope.query } }).
            then(function(response) {

              $scope.status = response.status;
              $scope.suggestions = response.data;

            }, function(response) {
                /* SOMETHING WENT WRONG WTIH THE CALL DO SOMETHING HERE */
          });
        };

    });

这里有一个非常简单的Angular 1设置/教程:

https://www.w3schools.com/angular/default.asp

这不是一个直接的答案,但请相信我一个更有效的答案。 Angular 1和更新的版本可以节省大量时间并带来性能。

而btw,autocomplete()不是本机jQuery函数。另外我没有提到你也需要jQuery用于Angular,但我认为它已经添加到你的模板中了。

© www.soinside.com 2019 - 2024. All rights reserved.