javascript - Select2 编程访问

标签 javascript jquery jquery-select2

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

我有一个连接到 Ajax 源的简单 select2 下拉菜单。这工作得很好。

我还有一个等待选择 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}});

});

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

感谢您提供任何信息!

最佳答案

选择2 normally triggers the select2-selecting event通过 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 事件,并允许您重用您的事件处理程序。

关于javascript - Select2 编程访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27825051/

相关文章:

javascript - 为什么我的 promise 链失败了?

javascript - 嵌套集合中的模型更改事件未按预期触发

javascript - 将下划线导入 Angular 2 CLI 项目

javascript - Thymeleaf 属性和模态

javascript - 仅更改用户在 AJAX 扩展文本框中输入的字符串的文本颜色

javascript - 下拉列表无法正确显示在 html 页面中

javascript - 如何将图标附加到 select2 中的选定元素?

javascript - 如何从dom中删除select2

javascript - Select2 templateResult 数据没有可引用的元素

php - 跨子域ajax长轮询