Jquery Select2,如何在on(change)函数中访问ajax数据?

时间:2013-02-27 00:20:33

标签: jquery jquery-select2

我正在使用带有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

3 个答案:

答案 0 :(得分:21)

$("#e6").on('change', function(e) {
    // Access to full data
    console.log($(this).select2('data'));
});

答案 1 :(得分:2)

根据Select2 docs,更改事件应该有3个属性:事件对象包含以下自定义属性:

  • val:当前选择(考虑到更改的结果) - id或id数组
  • 添加:添加的元素(如果有) - 完整的元素对象,而不仅仅是id
  • 删除:已删除的元素(如果有) - 完整元素对象,而不仅仅是id

甚至有例子:

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

但我注意到addedremoved属性仅在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
}

感谢!!!