我有这段代码:
我的mysql表'国家'包含列: id和名称
<input type="text" name="country" id="country" class="form-control input-lg" autocomplete="off" placeholder="Type Country Name" />
<input type="hide" name="id_country" id="id_country" />
<script>
$(document).ready(function(){
$('#country').typeahead({
source: function(query, result)
{
$.ajax({
url:"fetch.php",
method:"POST",
data:{query:query},
dataType:"json",
success:function(data)
{
result($.map(data, function(item){
return item;
}));
}
})
}
});
});
</script>
<?php
//fetch.php
$request = mysqli_real_escape_string($connect, $_POST["query"]);
$query = "
SELECT * FROM countries WHERE name LIKE '%".$request."%'
";
$result = mysqli_query($connect, $query);
$data = array();
if(mysqli_num_rows($result) > 0)
{
while($row = mysqli_fetch_assoc($result))
{
$data[] = $row["name"];
}
echo json_encode($data);
}
?>
上面的代码是演示,完整版是here
如何导入国家/地区ID并将其插入id_country输入?
谢谢!
答案 0 :(得分:2)
尝试添加更改侦听器,并在更改触发typeahead输入元素时使用它来分配ID。
$('#country').change(function(ev){
var id = ($(this).typeahead("getActive") || {}).id;
$('#id_country').val(id);
});
PS:你还需要改变
$data[] = $row["name"];
到
$data[] = $row;
以便ID也是JSON编码数据的一部分,然后应该如下所示:
[{ "id": 1, "name": "Australia"}, { "id": 2, "name": "Germany"}]
答案 1 :(得分:0)
您可以在同一查询中执行所有操作
$query = "INSERT INTO table (country_id) SELECT id FROM table";
只需更改表值
答案 2 :(得分:0)
试试这个
$('#id_country').val(<country-code>);
为此,您必须从PHP返回国家/地区名称和ID。当用户选择国家/地区时,您可以触发click事件以将选定的国家/地区ID值插入输入。