0

好的,所以我正在使用 jQuery 自动完成功能来处理我在美国的位置和州的数据库,目标是用户开始输入城市、城镇等,然后我显示城市(我的数据库中的位置)、州(我的地区) DB)邮编(我的数据库中的邮政编码)给他们,当他们选择一个时,它会填写城市州和邮政编码字段。我的问题是,当我选择一个选项时,州和邮政编码正确填写,但是城市字段需要邮政编码的价值,我想不出来。。这是我的 JS 代码,后面是单独的 PHP 文件,用于提取我的数据库数据。我在 PHP 方面比 JS 更有经验,但你永远不知道你在哪里会犯错...

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'];

并从选择功能中删除该行:

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

(因为 $.autocomplete 会 $("#scity") 自动设置值)

于 2012-09-13T19:18:50.323 回答