根据其他输入字段从json中选择2

时间:2018-07-09 08:59:56

标签: javascript jquery jquery-select2

我需要基于对CITY的选择和select2来填充PROVINCE

我遇到了一些问题:

1- PROVINCE:默认情况下已填充,但是我得到重复的元素。在我的示例中,我得到:

Milan
Milan
Torin
Torin

但是我想得到:

Milan
Torin

由@david解决:http://jsfiddle.net/pe1u6Luo/282/

2-基于PROVINCE选择,我只需要用子数组填充CITY。例如,如果我在第一次选择时选择了Milan,则需要得到CITY,例如:

Rho
Other city

我不知道该怎么过滤。

由@david解决:http://jsfiddle.net/pe1u6Luo/282/

3- select2的字段框过滤器不起作用。如果我插入“ MI”,都灵仍然显示

4-基于@david解决方案http://jsfiddle.net/pe1u6Luo/282/,我必须按字母顺序返回PROVINCE数组。在我的示例中,已经完成,因为我只插入了2个项目,并且已经订购了。.

这是我最初的小提琴:

http://jsfiddle.net/pe1u6Luo/218/

2 个答案:

答案 0 :(得分:2)

在您的processResults上添加if语句。

检查省内的processResults

processResults: function (data) {
    var a = [];
    return {
        results: $.map(data, function(obj) {
            if (!a.includes(obj.provincia.nome)) {
                a.push(obj.provincia.nome);
                return { id: obj.provincia.codice, text: obj.provincia.nome };
            }
        })
    };
}

这是城市选择中的processResults

processResults: function (data) {
    return {
        results: $.map(data, function(obj) {
            if ($('#province').val() == obj.provincia.codice){
                return { id: obj.nome, text: obj.nome };
            }
        })
    };
}

在省选择中,声明一个用于存储省名称的数组。如果阵列中已经有省名,请不要显示重复的名称。

在城市选择中,只需将省代码与选定的省代码一起检查即可。

答案 1 :(得分:0)

这是与您正在阅读的对象有关的问题。 被解析的对象在两个位置具有provincia.name ='Milan',在两个位置具有'Torin'。

select2功能运行正常,问题在于对象被“读取”。