1

jquery-ui-autocomplete を使用して mysql DB から 1 つのフィールドを正常に取得していますが、リストからユーザーの選択を取得し、DB から再選択して、通常は DB から取得したアドレスを複数のフォームに入力する必要があります.

ここに私がこれまで取り組んできたコードがありますが、必要な結果を得るために続行する方法がわかりません。シナリオは次のとおりです。DB から取得した郵便番号を入力する INPUT フィールドがあります。次に、ユーザーは郵便番号を選択します。その選択から、DB からすべての住所を取得して個々のフォームに入力する必要があります。

私のHTMLファイル:

$(document).ready(function() {
                $("#autocomplete").autocomplete({
                    autoFocus: true,
                    source: "search.php",
                    minLength: 2, //search after two characters
                    select: function(event, ui){
                        //do something
                        }
                    });
            });

<body>
    <input id="autocomplete" type="text" name="autocomplete" />
</body>

私のsearch.phpファイル:

// DB connection is done here

$term = trim(strip_tags($_GET['term']));//retrieve the search term that autocomplete sends

$qstring = "SELECT DISTINCT zipcode FROM table WHERE zipcode LIKE '%".$term."%' ORDER BY zipcode ASC";
$result = mysql_query($qstring); //query the database for entries containing the term

while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) //loop through the retrieved values
{
$row['zipcode'] = htmlentities(stripslashes($row['zipcode']));
$row['id'] = (int)$row['id'];
$row_set[] = $row['zipcode']; //build an array
}

echo json_encode($row_set); //format the array into json data

もちろん、複数の同じ郵便番号を排除するために、クエリで DISTINCT を使用しています。

ご協力ありがとうございました!ロバート

4

1 に答える 1

0

ajaxを使いたいようですね。オートコンプリート検索を実行するのと同じ方法で検索を実行します。'select'イベントは、オートコンプリート選択が行われるたびに実行されます。ユーザーがオートコンプリートを使用せずに完全な郵便番号を入力した場合、それがトリガーされるとは思わない。'change'イベントは、フィールドを離れるとトリガーされます。ユーザーがオートコンプリートフィールドを離れるまでトリガーされません。

select: function(event, ui){

    $.ajax({
        url: "otherSearch.php",
        type: "POST",
        data: { input1 : input1,
                input2 : input2 },
        success: function(data) {

            //parse returned data and fill in the forms

            });
        }
    }
}

ajaxの詳細:http://api.jquery.com/jQuery.ajax/

于 2012-07-12T13:16:52.607 に答える