0

さて、私はjQueryオートコンプリートを使用して、米国の場所と州のデータベースを操作しています。目標は、ユーザーが都市、町などを入力し始めることであり、都市(DBの場所)、州(私のDBの地域)を表示しますDB)Zip(私のDBの郵便番号)をそれらに送信し、それらを選択すると、都市の州と郵便番号のフィールドが入力されます..私の問題は、オプションを選択すると、州と郵便番号が正しく入力されることですが、都市のフィールドは郵便番号の値と私はそれを理解することはできません..これが私のJSコードであり、その後に私のDBデータを取り込む別のPHPファイルがあります..私はJSよりもPHPの経験が豊富ですが、あなたがどこにいるのかわかりません間違えちゃう…

JS/jQuery ファイル:

$(document).ready(function(){
var ac_config = {
    source: "autocomplete-l.php",
    select: function(event, ui){
        $("#scity").val(ui.item.location);
                    $("#sstate").val(ui.item.region);
        $("#szip").val(ui.item.postalCode);
    },
    minLength:1
};
$("#scity").autocomplete(ac_config);
});

そしてPHPファイル:

$cities = array();
$sth = $dbh->prepare("SELECT * FROM locations WHERE country = 'US'");
$sth->execute();

while($row = $sth->fetch(PDO::FETCH_ASSOC)) {
$cities[]=$row;
}

$term = trim(strip_tags($_GET['term']));

$matches = array();
foreach($cities as $city){
if((stripos($city['location'], $term) !== false)){
    // Add the necessary "value" and "label" fields and append to result set
    $city['value'] = $city['location'];
    $city['value'] = $city['region'];
    $city['value'] = $city['postalCode'];
    $city['label'] = "{$city['location']}, {$city['region']}{$city['postalCode']}";
    $matches[] = $city;
    }
}

$matches = array_slice($matches, 0, 100);
print json_encode($matches);
4

1 に答える 1

3

event.preventDefault();選択関数内で呼び出します。

それ以外の場合、オートコンプリートはデフォルト アクションを続行します。

ユーザーがメニューから何かを選択した後、値が入力要素に挿入ます

入力要素は$("#scity")

$("#scity").autocomplete(ac_config);

値は郵便番号です。

$city['value'] = $city['postalCode'];

次の行に注意してください。

$city['value'] = $city['location'];
$city['value'] = $city['region'];
$city['value'] = $city['postalCode'];

...上書きします$city['value']

これだけを使用できます:

$city['value'] = $city['location'];

select-function からその行を削除します。

$("#scity").val(ui.item.location);

( $.autocomplete が $("#scity") 自動的に値を設定するため)

于 2012-09-13T19:18:50.323 に答える