问题
I'm currently using this plugin:
https://github.com/devbridge/jQuery-Autocomplete
What I want is that when I selected an option from the name text field I can get that value and put it as a parameter on the address text field where the options in the address field is limited only where name exist in that address.
And same goes when I selected an option from the address field the options in the name field is limited only to names of persons who lives on that address.
Here's my code:
$(document).ready(function(){
var name = '';
var add = '';
$('#name').change(function() {
name = $('#name').val();
});
$('#add').change(function() {
add = $('#add').val();
});
$('#name').devbridgeAutocomplete({
serviceUrl: 'search/name',
minChar: 2,
params: {add: add},
onSelect : function(suggestion) {
$('#name').val(suggestion.value);
}
});
$('#name').devbridgeAutocomplete({
serviceUrl: 'search/address',
minChar: 2,
params: {name: name},
onSelect : function(suggestion) {
$('#name').val(suggestion.value);
}
});
});
I don't know why it's not working, did I do it right or am I doing it all wrong? Please help!
Has anyone else had this problem or know of a solution?
回答1:
Because your variables are strings, they are passed as values and not a reference. When data in the "#add" changes you need to update parameters on "#name" input autocomplete instance:
$('#add').change(function() {
var add = $('#add').val();
$('#name').devbridgeAutocomplete().setOptions({
params: { add: add }
});
});
回答2:
although this is few year back question, I came across this issue so I post my solution here to help out anyone that might need this for Devbridge additional params
$('#search').autocomplete({
serviceUrl: "search/name",
type: "POST",
dataType: "json",
paramName: "name",
params: {
middle: function(){
return $("#middle").val();
},
last: function(){
return $("#last").val();
},
//no value return for using last:$("#last").val()
},
minChars: 3,
showNoSuggestionNotice: true,
noSuggestionNotice: "No results found",
transformResult: function(response) {
if (response){
return {
suggestions: $.map(response.results, function(dataItem) {
return { value: dataItem.name.trim(), data: dataItem.id, object: dataItem };
})
};
}
else{
return {
suggestions: []
};
}
},
onSelect: function(suggestion){
//suggestion.object contain all values pass thru, no need to call again
},
});
来源:https://stackoverflow.com/questions/27288977/autocomplete-devbridge-update-params-on-change-from-other-autocomplete-field