2012-05-10 52 views
1

我有一点PHP和JQuery的它创建的自动完成表单:jQuery用户界面自动完成 - 选择价值

<? 
mysql_select_db($database_database_connection, $database_connection); 
$query = "SELECT * FROM Device_tbl"; 
$result=mysql_query($query, $database_connection) or die(mysql_error()); 
$findrow = array(); 
while($row = mysql_fetch_assoc($result)){ 
    $manufac = $row['Manufacturer']; 
    $mod = $row['Model']; 
    $string = $manufac.' '.$mod; 
    $findrow[] = $string; 
} 

?> 

<script type="text/javascript"> 
$(document).ready(function() { 
    $("#search_input").watermark("Begin Typing to Search"); 

    var availableTags = <? echo json_encode($findrow);?>; 
    $("#search_input").autocomplete({ 
      source: availableTags 
      }); 


    $("#search_input").bind("autocompleteselect", function() { 
     var search_input = $(this).val(); 
     if (search_input =='') search_input ='*'; 
     var dataString = 'keyword='+search_input; 

     if (search_input.length > 2 || search_input=='*') { 
      $.ajax({ 
       type: "GET", 
       url: "core/functions/searchdata.php", 
       data: dataString, 
       success: function(server_response) { 
        $('#searchresultdata').empty(); 
        $('#searchresultdata').append(server_response); 
        $('span#category_title').html(search_input); 
       } 
      }); 
     } 

     return false; 
    }); 
    $("#search_input").trigger('keyup'); 
}); 
</script> 

searchdata.php

mysql_select_db($database_database_connection, $database_connection); 
$query = "SELECT Image, Manufacturer, Model FROM Device_tbl WHERE Manufacturer LIKE '%$keyword%' OR Model LIKE '%$keyword%'"; 
if ($keyword=='*') $query = "SELECT Image, Manufacturer, Model FROM Device_tbl"; 
$result=mysql_query($query, $database_connection) or die(mysql_error()); 

if($result){ 
    if(mysql_affected_rows($database_connection)!=0){ 
      while($row = mysql_fetch_object($result)){ 
?> 
    <div class="hold-cont"> 
     <div class="holder"> 
      <div class="image-hold" > 
       <img class="image-icon" src="<? echo $deviceimg.($row->Image); ?>"/> 
</div> 
     </div> 
     <div class="device-name devicename-txt"><? echo($row->Manufacturer. ' ' .$row->Model); ?></div> 
    </div> 
    <? 
    } 
    }else { 
     echo 'No Results for :"'.$_GET['keyword'].'"'; 
    } 

} 
else { 
    echo 'Parameter Missing'; 

自动完成部分工作正常,然而我无法工作的是在选定的值上运行.ajax。例如,如果我开始输入“Apple iMac”,只能达到“Ap”。建议是Apple iMac,但是当我点击这个建议时,它会在“Ap”上运行查询 - 也就是说,它只运行查询内容,而不是点击的内容。

任何想法如何使这项工作,当用户点击建议或命中输入?

+0

你能提供的'剧本searchdata.php' – mgraph

+0

是啊,现在又增加了它 – K20GH

回答

1
$("#search_input").autocomplete({ 
    source: availableTags, 
    select: function(event, ui) { 
     sendSelected(ui.item.value); 
     } 
    }); 

function sendSelected(_val){ 
    var search_input = _val; 
    if (search_input =='') search_input ='*'; 
    var dataString = 'keyword='+search_input; 

    if (search_input.length > 2 || search_input=='*') { 
     $.ajax({ 
      type: "GET", 
      url: "core/functions/searchdata.php", 
      data: dataString, 
      success: function(server_response) { 
       $('#searchresultdata').empty(); 
       $('#searchresultdata').append(server_response); 
       $('span#category_title').html(search_input); 
      } 
     }); 
    } 
} 

searchdata.php:

$splitKeyword = explode(" ", $keyword); 
if(sizeof($splitKeyword)==3){ 
    $splitKeyword[1] = $splitKeyword[1]." ".$splitKeyword[2]; 
} 
$query = "SELECT Image, Manufacturer, Model FROM Device_tbl WHERE Manufacturer LIKE '%".$splitKeyword[0]."%' OR Model LIKE '%".$splitKeyword[1]."%'"; 
+0

工作太棒了!谢谢。但是,我的SQL显然不起作用。它在制造商或型号中寻找喜欢本田思域。既然它找不到那样的东西,它什么都不会返回。即使数据库作为制造商本田和它的模型,思域:/ – K20GH

+0

试试这个:'... LIKE'%“。$ keyword。”%'OR ...' – mgraph

+0

同样的问题。我相信它是因为ui.item.value是数据库中制造商和模型字段的组合。但是,我认为,因为我正在做一个LIKE查询,它仍然会找到它。 '本田思域'就像制造商'本田'......对吧? – K20GH

相关问题