我正在使用带有ajax的Select2。 一切正常,当用户点击他们想要的项目时,我使用文档中指定的on(更改)功能来做一些事情。
$("#e6").on("change", function(e) {
$('input#Destination').val(e.val);
});
});
返回值(e.val)是ajax调用的 data.id 值,但我的数据对象有“名称”,“ id “和”输入“。
我可以将代码添加到dataFormatSelection(),但这听起来并不合乎逻辑并且令人困惑。
function dataFormatSelection(data) {
console.log(data.name + "|" data.id + "|" + data.type);
return data.name;
}
如何在on(“更改”..活动?
中访问整个数据对象(而不仅仅是 data.id )答案 0 :(得分:21)
$("#e6").on('change', function(e) {
// Access to full data
console.log($(this).select2('data'));
});
答案 1 :(得分:2)
根据Select2 docs,更改事件应该有3个属性:事件对象包含以下自定义属性:
甚至有例子:
$("#e11").select2({
placeholder: "Select value ...",
allowClear: true,
data: [{id: 0, text: 'story'},{id: 1, text: 'bug'},{id: 2, text: 'task'}]
});
$("#e11_2").select2({
placeholder: "Select value ...",
multiple: true,
data: [{id: 0, text: 'story'},{id: 1, text: 'bug'},{id: 2, text: 'task'}]
});
$("#e11").on("change", function(e) {
console.log(JSON.stringify({val:e.val, added:e.added, removed:e.removed}));
}).on("open", function() {
console.log("open");
});
$("#e11_2").on("change", function(e) {
console.log(JSON.stringify({val:e.val, added:e.added, removed:e.removed}));
}).on("open", function() {
console.log("open");
});
但我注意到added
和removed
属性仅在multiple: true
开启时才会出现。我不知道这是设计还是错误。无论如何,我将报告它,因为在更改时可以使用所选元素是绝对必要的。
答案 2 :(得分:0)
我有疑问...... 我如何获取控制台日志中显示的值并使用它?
如果我采用这些值并将每个值放入var中,这是正确的吗? 因为如果我对创建的任何var使用console.log(var),则会显示该值,但如果执行警报(var),则不会显示警报。
我需要使用所选选项的值来使用AJAX调用PHP函数。
$("#e11").on('change', function(e) {
//I create a var data and works it like an Array
var data = $(this).select2('data');
//Then I take the values like if I work with an array
var value = data.id;
var text = data.text;
//If I use console.log(var) the values are displayed but not with an alert
}
感谢!!!