选择2编程访问

时间:2015-01-07 17:26:09

标签: javascript jquery jquery-select2

我正在使用jQuery Select2,我遇到了设置值并触发事件的问题。

我有一个简单的select2下拉连接到Ajax源。这完全没问题。

我还有一个等待选择select2选项的事件:

 // On project select, we add the projects to the list along with the parties
$('.projSearch').on("select2-selecting", function(e) {

    // Set the value of the project
    var projectID = e.val,
        table = '';

        alert(projectID);
        console.log(e);

      ...

正常使用select2下拉菜单时,此事件正常。它会检测您选择的选项的数据。

但是,我还在页面上添加了一个按钮,允许用户设置字段的数据。它设置的数据很好,但它永远不会触发事件select2-selecting

我尝试将数据与事件一起传递,但无论何时触发select2-selecting事件,它都返回undefined

$(document).on("click", "[name=addProject]", function() {

    // Set the vars
    var projectName = $(this).attr('projectname'),
        projectID = $(this).attr('projectid'),
        projectNameLong = projectName + ' ('+projectID+')';

    // Add the project to the list  
    $("[name=projects]").select2("data", [{id: projectID, text: projectNameLong}]).trigger("select2-selecting", {val: projectID, data: {id: projectID, text: projectNameLong}});

});

如何将数据与触发器一起传递给我可以在事件中访问它?

感谢您的任何信息!

1 个答案:

答案 0 :(得分:2)

normally triggers the select2-selecting event选择2 creating a $.Event object,其中包含您要查找的valdata属性的自定义数据。 The second parameter of .trigger将允许您直接从事件处理程序中获取额外数据,但它不会将其附加到事件对象。

$(document).on("click", "[name=addProject]", function() {
    // Set the vars
    var projectName = $(this).attr('projectname'),
        projectID = $(this).attr('projectid'),
        projectNameLong = projectName + ' ('+projectID+')';

    // Create the data object
    var data = {
        id: projectID,
        text: projectNameLong
    };

    // Create the custom event object
    var evt = $.Event("select2-selecting", {
        val: data.id,
        data: data
    });

    // Add the project to the list  
    $("[name=projects]")
        .select2("data", [data])
        .trigger(evt);
});

这应该为您复制原始select2-selecting事件,并允许您重用事件处理程序。