Jquery UI自动完成 - 使用前一个选择字段中的值

时间:2011-04-26 14:24:23

标签: php jquery-ui autocomplete

我想自动填写城市文字输入,但只搜索之前所选国家/地区的城市。我的代码似乎应该可行,但它没有发送正确的国家/地区值。

表格:

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,它可以正常工作(仅限于国家/地区)...并且自动填充功能在表单中有效。但是,它会返回所有城市而不受国家/地区代码的限制。

我可能会遗漏一些东西吗?或者也许更好的方法来实现这一目标?谢谢!

2 个答案:

答案 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()} 

});