2014-02-20 124 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

相關問題