我在我的一个应用程序中使用Ajax Autocomplete for
Jquery(
http://www.devbridge.com/projects/autocomplete/jquery/).搜索表单看起来像这样:
<form id="topsearch" method="POST" action="/searchAll"><input type="text" class="searchform" name="q" id="q" value="Country,City,Hotel or a Tourist Attraction" o nfocus="clearInput(this);" onblur="defaultInput(this);" />
<select id="top_search_select" name="entity_type">
<option value="country">Countries</option>
<option value="city">Cities</option>
<option value="place" selected="selected">Tourist Attractions</option>
<option value="hotel">Hotels</option>
</select>
<input type="submit" name="topsearch" class="submit" value="SEARCH" title="SEARCH"/>
</form>
并且自动完成配置如下所示:
<script type="text/javascript">
//<![CDATA[
var a = $('#q').autocomplete({
serviceUrl:'/search',delimiter: /(,|;)\s*/,// regex or character
maxHeight:400,width:325,zIndex: 9999,params: {entity_type:$('#top_search_select').val()},deferRequestBy: 0,//miliseconds
noCache: false,//default is false,set to true to disable caching
onSelect: function(value,data){window.location.replace(data);},});
//]]>
</script>
现在问题是在后端我有不同的处理程序,为用户通过表单中的选择选项选择的不同类型的实体生成结果.
默认情况下,entity_type是正好传递给后端处理程序的地方.但是,我想要的是当一个人从params形式的选择框中选择一个不同的实体时:{entity_type:$(‘#top_search_select’).脚本配置中的val()}也会得到更新.
任何帮助或想法将不胜感激.谢谢.
解决方法
或者,您可以使用在发送ajax请求之前评估的函数来指定参数.
$('#q').autocomplete({
...
params: {
'entity_type': function() {
return $('#top_search_select').val();
}
}
...
});