2014-02-20 51 views
0

我在一个星期内遇到了这个问题。我在这里有下拉选择与ajax张贴值到另一个下拉列表,但现在我需要张贴到带有自动完成功能的文本框。我需要的是连接我的自动完成查询和我的ajax,这样如果我选择例如ballpen,所有ballpen都会在自动完成中推荐。请帮我解决一下这个。我需要完成它。自动完成基于数据库中下拉列表的值

这里是我的代码

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 
    } 
    } 
?> 

autocomplete.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"; 
     } 
    } 
?> 
+0

会发生什么事,当你运行你的代码? – Lupin

+0

@Lupin当我运行代码并尝试在#tag字段中输入时,出现 – user3318208

+0

您调试了吗?尝试警报或使用console.log数据变量AJAX成功 – Lupin

回答

0

//每当U选择标记字段会得到焦点,并自动开始搜索,这样你们无需键入看回调对焦功能与$(本) .autocomplete(“search”,“”);和0 MINLENGTH u必须发送的主要价值,并从这里也

<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> 

未经测试的反应,如果任何问题发表评论

+0

不起作用。 $(this).autocomplete(“search”,“”); – user3318208

+0

它开始显示结果,然后开始键入 –

+0

,就像您所说的那样。如何解决这个问题? – user3318208

相关问题