2011-04-26 66 views
0

我想自動填充城市文本輸入,但只搜索以前選擇的國家/地區的城市。我的代碼似乎應該可以工作,但它不會發送正確的國家/地區值。Jquery UI自動完成 - 使用先前選擇的字段的值

形式:

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 /英國學期= FOO?' 和SQL語句搜索「項的值'國家代碼是'UK'的地方。如果我手動鍵入網址,它的工作沒有問題(僅限於國家)...並且自動完成功能在表單中起作用。但是,它將返回所有城市,而不受國家代碼的限制。

有什麼我可能會失蹤?或者,也許更好的方法來實現這一目標?謝謝!

回答

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> 
+0

完美。那工作。謝謝!你說得對,我不需要摧毀它。 – TerryMatula 2011-04-26 15:17:13

0

試試這個

$("#city").unautocomplete().autocomplete(

       base_url+"index.php/index/autocompletecities/", 

       { 

       extraParams:     
        {country:$('#country').val()} 

}); 
+0

似乎不起作用。看着Firebug,它說「不完整不是一個功能」。對於它的價值,我使用jQuery 1.5.2和jquery ui 1.8.12 – TerryMatula 2011-04-26 14:40:35

+0

試試這種方式看看編輯答案 – jimy 2011-04-26 14:45:38