AutoComplete-devbridge:更新其他自动填充字段更改的参数

时间:2014-12-04 08:03:27

标签: jquery autocomplete textfield jquery-autocomplete

我目前正在使用此插件:

https://github.com/devbridge/jQuery-Autocomplete

我想要的是,当我从名称文本字段中选择一个选项时,我可以获取该值并将其作为参数放在地址文本字段中地址字段中的选项仅限于该地址中存在名称的位置。

同样,当我从地址字段中选择一个选项时,名称字段中的选项仅限于居住在该地址上的人员的姓名。

这是我的代码:

$(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);
        }
    });
});

我不知道为什么它不起作用,我做得对还是我做错了?请帮忙!

是否有其他人遇到此问题或知道解决方案?

2 个答案:

答案 0 :(得分:2)

因为您的变量是字符串,所以它们作为值而不是引用传递。当" #add"中的数据您需要更改"#name"输入自动完成实例:

$('#add').change(function() {
    var add = $('#add').val();
    $('#name').devbridgeAutocomplete().setOptions({
        params: { add: add }
    });
});

答案 1 :(得分:2)

虽然这是几年前的问题,但我遇到了这个问题,所以我在这里发布我的解决方案以帮助任何可能需要这个用于Devbridge的其他参数

$('#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
    },
});