0
我有一个JSON文件。最初它看起来像这样:从json填充ID的下拉列表
{"marki": [
{ "name": "Access", "models": [ "Max", "Acce" ] },
{ "name": "Adly", "models": [ "Adly1", "Adly2" ] }]
}
不幸的是,这是一件坏事,因为型号名称重复。所以我为每个模型添加了一个ID。我从Wordpress数据库获得的ID。 我犯了这样的一个JSON:
{"marki": [
{ "name": "Access", "models": [ { "name":"Max", "id": 6206}, { "name":"Acce", "id": 6207} ] },
{ "name": "Adly", "models": [ { "name":"Adly1", "id": 6208}, { "name":"Adly2", "id": 6209} ] }]
}
对于我有一个JS文件:
jQuery(document).ready(function($){
var marki = {};
var json = $.getJSON(wpp.uploads_dir + '/motocykle-marki.json');
json.done(function(data){
$.each(data.marki, function (index, marka){
marki[marka.name] = marka.models;
});
console.log(marki);
});
$(document).on('change', '[data-wpt-field-title~="motocykle-marka"]', function(){
var selected_model = $(this).find(":selected").text();
$('[data-wpt-field-title~="motocykle-model"] > option').each(function(){
if($.inArray($(this).text(), marki[selected_model]) == -1){
$(this).hide();
} else {
$(this).show();
}
});
});
});
这JS写原来的JSON版,现在我不知道如何将它转换到一个新版本。现在第二个下拉菜单什么也没有显示
Edition -------------------------------------------- -----
这里有一个解决问题的办法:
jQuery(document).ready(function($){
var marki = {};
var json = $.getJSON(wpp.uploads_dir + '/motocykle-marki.json');
json.done(function(data){
$.each(data.marki, function (index, marka){
marki[marka.name] = marka.models;
});
console.log(marki);
});
$(document).on('change', '[data-wpt-field-title~="motocykle-marka"]', function() {
$('[data-wpt-field-title~="motocykle-model"] > option').hide();
var selected_model = $(this).find(":selected").text();
var models = marki[selected_model];
for (var i in models) {
var model = models[i];
$('[data-wpt-field-title~="motocykle-model"] > option[value="' + model.id + '"]').show();
}
});
});
这是更好的,因为第二选择现在显示模型。但即使它们不属于该品牌,它仍会显示具有相似名称的所有型号。就像刚开始时一样。 –