我想自动填写城市文字输入,但只搜索之前所选国家/地区的城市。我的代码似乎应该可行,但它没有发送正确的国家/地区值。
表格:
Country: <select name='country' id='country'>
<option value='US'>USA</option>
<option value='UK'>United Kingdom</option>
</select><br/>
City: <input type='text' name='city' id='city' />
js:
$( "#city" ).autocomplete({
source: "searchCities/" + $('select#country option:selected').val(),
minLength: 2
});
URL结构应该是'searchCities / UK?term = foo',并且SQL语句正在搜索国家代码为'UK'的'term'的值。如果我手动输入URL,它可以正常工作(仅限于国家/地区)...并且自动填充功能在表单中有效。但是,它会返回所有城市而不受国家/地区代码的限制。
我可能会遗漏一些东西吗?或者也许更好的方法来实现这一目标?谢谢!
答案 0 :(得分:2)
如果您还没有这样做 - 每次更改选择框的选定值时,都应修改自动填充的源属性。
每次用户在选择框中选择新值时,您都可以销毁并重新构建自动完成功能:
<script>
function renewAutocomplete() {
$( "#city" ).autocomplete("destroy");
$( "#city" ).autocomplete({
source: "searchCities/" + $('select#country option:selected').val(),
minLength: 2
});
}
</script>
Country:
<select name='country' id='country' onchange='renewAutocomplete();'>
<option value='US'>USA</option>
<option value='UK'>United Kingdom</option>
</select>
<br/>
City: <input type='text' name='city' id='city' />
或者最好不要销毁它并重新构建它,而是修改它的源属性:
<script>
function renewAutocomplete() {
$( "#city" ).autocomplete("option", "source", "searchCities/" + $('select#country option:selected').val());
}
</script>
答案 1 :(得分:0)
试试这个
$("#city").unautocomplete().autocomplete(
base_url+"index.php/index/autocompletecities/",
{
extraParams:
{country:$('#country').val()}
});