使用 select2 ajax 数据更新隐藏的输入

Use select2 ajax data to update hidden inputs

我在使用从 Select2 Ajax 检索到的数据更新隐藏输入时遇到问题。 请看我的代码:

var select2_town = $('.select-test select').select2({

ajax: {
url : ajax_var.url, 
dataType: 'json',
type: 'post',
delay: 250,
data: function (params) {
  return {
    q: params.term, // search term
    page: params.page,
  };
},
processResults: function (data, page) {
  return {
   results: $.map(data, function (item) {
        return {
            id: item.id, //eg 1149
            town: item.place_name, //eg Reading
            county: item.county, //eg Berkshire
            country: item.country,
            data: item
        };
    })
  };
},
cache: true;
},
   escapeMarkup: function (markup) { return markup; },
  minimumInputLength: 1,
 templateResult: function (item) { return ('<p>' + item.town + ' - ' +   item.county + '</p>'); },
 templateSelection:  function (item) { return (item.town); },
});

这段代码对我来说很好用。我的问题是选择一个值后会发生什么。

我想通过 'change' 事件分别用镇、县和国家更新我的隐藏输入 ID“#town”、“#county”和“#country”。

我看过很多 SO 示例,但它们都止于 $(this).select2('data')[0];,但不展开。

奇怪的是以下脚本在控制台日志中显示了正确的值。但始终只将对象 ID 应用于#country。

select2_town.on('change', function() {
var obz = $(this).select2('data')[0].country;
  console.log(obz);//displays Reading in console
 $("#country").attr("value",obz); //displays 1149
});

这确实有效。

我有另一个功能是添加隐藏在另一个文件中的 ID。我删除了它,然后脚本按我想要的方式运行。

此致

谢谢