【问题标题】:Cant call .ajax inside autocomplete无法在自动完成中调用 .ajax
【发布时间】:2013-09-17 10:45:10
【问题描述】:

我几天来一直在尝试让 jQuery 自动完成功能正常工作。现在我已经可以在文本框中输入它,它准确地显示了我想要的内容,但我的问题是当我点击我想要的那个时,它没有显示在文本框中。我知道这与自动完成有关,但我一生都无法弄清楚。如果有人可以提供帮助,将不胜感激。

index.php

<?php require('_php/functions.php') ?>
<!DOCTYPE HTML>
<html><head>
  <title>simple_light</title>
  <link rel="stylesheet" href="_style/main.css" />
</head>
<body>
            <h1> Autocomplete with jQuery</h1>
            <input type="text" name="autosuggest" id="autosuggest" onKeyUp="autoSuggest();"/>
            <div id="autosuggest-container"></div>
            <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> 
            <script src="_scripts/functions.js"></script>
</body>
</html>

functions.js

function autoSuggest(){

var autosuggestVal = $('#autosuggest').val();

    if (autosuggestVal != ''){
        $.ajax({
            url: '_php/ajax/autosuggest.php?query='+autosuggestVal,
            success: function(result){
                $('#autosuggest-container').html(result);
            }
        });
    }

}

functions.php

<?php 
require('config.php');

function autoSuggest($query){

    $connect = mysql_connect(DB_HOST, DB_USER, DB_PASS) or die(mysql_error());
    mysql_select_db(DB_NAME, $connect);

    $sql = "
    SELECT Location.LocationID, CONCAT_WS(' ', SystemName, SiteNameLocation, SiteAddress1, SiteCity, SiteProvince, SitePostalCode) as expr2 
    FROM Location 
    WHERE Location.SystemName like '%".mysql_real_escape_string($query)."%'
    OR Location.SiteNameLocation like '%".mysql_real_escape_string($query)."%'
    OR Location.SiteAddress1 like '%".mysql_real_escape_string($query)."%'
    OR Location.SiteCity like '%".mysql_real_escape_string($query)."%'
    OR Location.SiteProvince like '%".mysql_real_escape_string($query)."%'
    OR Location.SitePostalCode like '%".mysql_real_escape_string($query)."%'
    ";

    $result = mysql_query($sql, $connect);
    $totalRows = mysql_num_rows($result);

    if ($totalRows > 0){
        $items = '<ul class="autosuggest">';

        while ($row = mysql_fetch_assoc($result)){

            $items .= '<li>'.$row['expr2'].'</li>';

        }

        $items .= '</ul>';

    }
    else{
        $items = 'no results found';
    }

    echo $items;

}
?>

autosuggest.php

<?php 
require('../functions.php');
autoSuggest($_GET['query']);
?>

【问题讨论】:

  • 如果你提供一个带有模拟数据的 JSFiddle 这将很快得到解决:)

标签: javascript php jquery ajax autocomplete


【解决方案1】:

我强烈怀疑您没有在建议中提供点击事件处理程序 - 如果您不告诉它如何设置值,它怎么知道如何设置?

看这个粗略的例子(我每次都模拟了一个简单的“hello”响应的 ajax 调用)

http://jsfiddle.net/KyleMuir/X2K4K/2/

我在 JS 中而不是在对象上连接这两个事件 - 更容易和更好。

$('#autosuggest').on('keyup', autoSuggest);
$('#autosuggest-container').on('click', setValue)

如您所见,keyup 事件绑定到 autosuggest id,onclick 事件绑定到 autosuggest-container。

点击自动建议容器(也就是您要选择的项目)后,它会设置值。

注意:在您的示例中,您可能需要将您感兴趣的项目传递给 setValue 函数。 YMMV

希望这会有所帮助。

【讨论】:

  • 我不认为你明白...我希望它自动填充文本框
  • 如果您单击显示的选项(在小提琴中),您会注意到它会自动填充文本框...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-20
  • 1970-01-01
  • 2011-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多