【问题标题】:Auto complete base on value of dropdown in database根据数据库中下拉列表的值自动完成
【发布时间】:2014-03-20 20:40:48
【问题描述】:

我在一周内就遇到了这个问题。我在这里是使用 ajax 将值发布到另一个下拉列表的下拉选择,但现在我需要使用自动完成功能发布到文本框中。我需要的是连接我的自动完成查询和我的 ajax,这样如果我选择例如圆珠笔,所有圆珠笔都会在自动完成中推荐。请帮我解决一下这个。我需要完成它。

这是我的代码

Ajax.php

<script>
$(document).ready(function(){
 $("#tag").autocomplete("autocomplete.php", {
        selectFirst: true
    });
});
</script>
</head>
<body>

<br/>
 Drop1
 <?php
    $mysqli = new mysqli("localhost", "root", "", "2015");
    $combo = $mysqli->query("SELECT * FROM category GROUP BY cat_code ORDER BY id");
    $option = '';
     while($row = $combo->fetch_assoc())
        {
        $option .= '<option value = "'.$row['cat_code'].'">'.$row['category'].'</option>';
        }
    ?>

<select id="main" name="main">
<option value="" disabled="disabled" selected="selected">Choose</option>
<?php echo $option; ?>
</select>
Auto Complete <input id="tag">
<script type="text/javascript">
$('#main').change(function(){
$.ajax({
url : 'getajax.php',
data :{mainlist_id : $(this).val()},
dataType:'html',
type:'POST',
success:function(data){
$('#tag').html(data);
}
});
});
</script>

getajax.php

在这里,我将值发布到另一个下拉列表中,但不需要发布到文本框中。

<?php
if (isset($_POST["mainlist_id"])) {
    $mysqli = new mysqli("localhost", "root", "", "2015");
    $main = $mysqli->real_escape_string($_POST["mainlist_id"]);


$result1 = $mysqli->query("SELECT * FROM code WHERE cat_code='$main' GROUP BY item_code ORDER BY item");

    while($row = $result1->fetch_assoc())
    {
    ?>
    <option value ="<?php echo $row['item_code'];?>"><?php echo $row['item'];?></option>';
<?php
    }
    }
?>

自动完成.php

<?php
    //$q=$_GET['q'];
    $mysqli = new mysqli("localhost", "root", "", "2015") or die("Database Error");
    $auto = $mysqli->real_escape_string($_GET["q"]);
    //$main = $mysqli->real_escape_string($_POST["mainlist_id"]); AND cat_code='$main'
    $sql = $mysqli->query("SELECT * FROM code WHERE item LIKE '%$auto%' GROUP BY id ORDER BY item" ); 

    if($sql)
    {
        while($row=mysqli_fetch_array($sql))
        {
            echo $row['item']."\n";
        }
    }
?>

【问题讨论】:

  • 运行代码时会发生什么?
  • @Lupin 当我运行代码并尝试在#tag 字段中输入时,没有出现
  • 你调试了吗?尝试在 AJAX 成功时提醒或使用 console.log 获取数据变量

标签: php jquery mysql ajax autocomplete


【解决方案1】:

//每当你选择标签字段时都会获得焦点,它会自动开始搜索,所以你不需要键入查看回调焦点函数 $(this).autocomplete("search", "");和 minlength 0。你必须发送主值并从这里得到响应

<script>
$(document).on("keyup", "#tag", function(){
    $("#tag").autocomplete({
        source: function(request, response) {
        $.getJSON("autocomplete_gethere.php", { main: $("#main").val() }, response);
        },
        minLength:0
        }).focus(function() {
        $(this).autocomplete("search", "");
    });
});
</script> 

     <script type="text/javascript">
        $('#main').change(function(){
        $.ajax({
        url : 'getajax.php',
        data :{mainlist_id : $(this).val()},
        dataType:'html',
        type:'POST',
        success:function(data){
        $('#tag').focus();    //please note this, here we're focusing in that input field
        }
        });
        });
        </script>

未经测试,如有问题发表评论

【讨论】:

  • 不起作用。 $(this).autocomplete("search", ""); 有什么用
  • 它会在您开始输入之前开始显示结果
  • 就像你说的那样。如何解决这个问题?
猜你喜欢
  • 1970-01-01
  • 2014-09-02
  • 1970-01-01
  • 2021-05-19
  • 2023-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多