在Select2 multiple中获取/设置单击选项的值

时间:2013-09-29 01:21:01

标签: javascript jquery jquery-select2

我在输入字段上使用Select2作为多选。我试图找出被点击的选项,但如果我查看单击选项(“choice-selected”)时抛出的事件,我可以找到的是event.target.value,它是包含所有选定选项的数据数组(选择)。基本上我想访问点击的值,这样我就可以让用户在该特定选项中编辑自定义属性。我怎么能这样做呢?

问题的JSFiddle:http://jsfiddle.net/JtTTF/

$(test).bind("choice-selected", function(e) {
 alert(e.target.value);
    // this is where i would like to access the clicked choice id so i can edit the custom data attribute "reason"
});

2 个答案:

答案 0 :(得分:6)

我也碰到了这个。在检查了select2.js源代码之后,我发现 choice-selected 事件传递了第二个参数:你点击的dom元素。

此dom元素包含一个带有“select2-data”键的数据对象。

您的代码可能如下所示:

$(test).on("choice-selected", function(e, choice) {
    var data = $(choice).data('select2-data');
    alert(data.reason ? 'Reason: ' + data.reason : 'No Reason');
});

我已相应更新了your jsfiddle

答案 1 :(得分:0)

尝试

var selected = {};
$(test).change(function () {
    var selections = $(this).select2('data');
    $.each(selections, function (idx, obj) {
        if (!selected[obj.id]) {
            selected[obj.id] = obj;
            $('#selectedText').text(JSON.stringify(obj));
            return false;
        }
    })
});

演示:Fiddle

注意:尚未看到是否有内置支持来执行此操作,而是自定义实现