我正在使用Struts 2、jsp、js和Jquery。
关于使用Jquery的自动完成,我有一个小问题。
Jquery版本: 1.6自动完成: 2.4.4。
我有两个输入(国家和地方)。当我选择一个具有自动完成功能的国家时,我会在一个隐藏的输入中设置国家代码。
本地必须只匹配国家代码(如BE、LU、.)被选中的国家。
在JQuery中,我在隐藏的输入中添加了" on ('change')“事件。当我选择国家时,我触发了改变。
在页面加载和国家代码的每次更改上,我在输入中设置自动完成,如下所示:
例句:我选择了德国,并寻找法兰克福。
function setSuggestLocation(){
// Add auto-completion
var location = $("#labelLocationId");
var countryCodeSelected = ($("#countryCode").val() != '' ? '?option=' + $("#countryCode").val() : '');
var urlToAction = "myAction.action" + countryCodeSelected;
location.autocomplete(urlToAction, {
minChars: 2,
onItemSelect: function(item) {
$("#locationCode").val(item.data);
}
});
}
我将自动完成参数"q“(= text)和国家代码发送到我的操作(在url中)。
我可以在我的行动,我可以选择我想要的城市在网页。
但是,如果我更改X倍的国家和我改变的位置在自动完成,动作将调用X倍,我改变了国家代码。
E.g
我认为这个错误是我将自动完成设置为输入的地方,但不确定。
我试图调用.autocomplete(“关闭”),.autocomplete(“破坏”),但我有错误。
提前谢谢你的忏悔。
发布于 2016-09-06 14:07:43
仅仅是认为问题就在于设置自动完成。也许您可以使用这段代码来在它更改时设置url。
// Getter
var source = $( ".selector" ).autocomplete( "option", "source" );
// Setter
$( ".selector" ).autocomplete( "option", "source", [ "c++", "java", "php", "coldfusion", "javascript", "asp", "ruby" ] );
因此,在您的实例中,代码将是
$( "#location" ).autocomplete( "option", "source", myaction.action?param1=countryCode; );
发布于 2016-09-06 14:55:24
谢谢马克,我已经添加了$("#labelLocationId").unbind();
来删除以前的处理程序,现在它开始工作了!
发布于 2016-09-06 15:19:15
下面是另一个选项,我使用myApp
命名空间,但这很容易理解,然后在需要时设置国家代码参数:
var myApp = myApp || {
baseURL: "${pageContext.request.contextPath}/base/getCitiesSuggestion.action",
location: {},
locationSelector: "#labelLocationId",
countryCodeSelected: "",
urlToAction: "",
countryCodeSelector: "#countryCode",
locationCodeSelector: "#locationCode",
countryCode: jQuery(this.countryCodeSelector),
setCountry: function() {
this.countryCodeSelected = (this.countryCode.val() != '' ? '?option=' + this.countryCode.val() : '');
this.urlToAction = this.baseURL + this.countryCodeSelected;
},
setSuggestLocation: function() {
var me = this;
this.location = $(this.locationSelector);
this.location.autocomplete(me.urlToAction, {
minChars: 2,
onItemSelect: function(item) {
$(me.locationCodeSelector).val(item.data);
}
});
}
};
// set stuff up
myApp.setCountry();
// set the autocomplete (once only)
myApp.setSuggestLocation();
///some code here.....
// changed country, set it again:
myApp.setCountry();
这样就避免了绑定和解除绑定,因为这会使事情慢下来。
https://stackoverflow.com/questions/39350913
复制相似问题