1

オートコンプリートフォームを作成するPHPと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」までしか入力できなかったとします。提案はAppleiMacですが、提案をクリックすると、「Ap」でクエリが実行されます。つまり、クリックされたものではなく、入力されたものに対してのみクエリが実行されます。

ユーザーが提案をクリックするか、Enterキーを押すと、これを機能させる方法はありますか?

4

1 に答える 1

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]."%'";
于 2012-05-10T22:24:49.823 に答える