【问题标题】:Select2 with ajax - issue with selecting valuesSelect2 with ajax - 选择值的问题
【发布时间】:2016-11-25 08:00:12
【问题描述】:

我使用 Select2 插件如下:

JS

function initAssignmentsAjax() {

        $("#assignments").empty();

        $( "#assignments" ).select2( {
            placeholder: "Select an assignment",
            allowClear: true,

            ajax: {
                url: "/Home/GetAssignments",
                dataType: 'json',
                delay: 250,
                data: function ( params ) {
                    return {
                        q: params.term, // search term
                        page: params.page
                    };
                },

                processResults: processAssignmentsResult,

                cache: true
            },
            escapeMarkup: function ( markup ) { return markup; }, // let our custom formatter work    TUTAJ WCHODZI PO assignmentsTemplateSelectionHandler
            minimumInputLength: 3, //1
            templateSelection: assignmentsTemplateSelectionHandler,
            templateResult: assignmentsTemplateResultHandler
        } )
    }

    function processAssignmentsResult(data, params) {

        var json = JSON.parse( data.Data );
        var x = $.map( json, function ( item ) {
            return {
                text: item.ProjectNumber + ' : ' + item.BatchName,
                children: item.ChildItems,
            };
        } )

        return { results: x };
    }

HTML

<select id="assignments" style="width: 500px;" ></select>

当我从 UI 输入值时,它工作正常 - 它将 Ajax 查询发送到控制器,最后呈现受控制的值。

我还添加了以下功能(基于How to programmatically inject search queries into Select2 v4?)以编程方式输入要搜索的值

function selectAssignments( term ) {

    $( "#assignments" ).empty();

    var assignmentElementControl = $( "#assignments" );

    assignmentElementControl.select2( 'open' );

    // Get the search box within the dropdown or the selection
    // Dropdown = single, Selection = multiple
    var $search = assignmentElementControl.data( 'select2' ).dropdown.$search || assignmentElementControl.data( 'select2' ).selection.$search;
    // This is undocumented and may change in the future

    $search.val( term );
    $search.trigger( 'keyup' );
}

当我重新加载页面并从浏览器控制台使用此功能(或将其绑定到 UI 中的某个按钮)时,它也可以正常工作。 但是当我第一次尝试通过键入 Select2 控件(此 pass)进行搜索时它停止工作,但是当我尝试使用此功能时,它不会从 Select2 控件运行 ajax 搜索查询(它打开搜索列表,显示输入的查询,但是不触发 ajax )。那么如何使用 Select2 UI 搜索来破坏这个功能呢?

【问题讨论】:

    标签: javascript ajax jquery-ui select2 jquery-select2-4


    【解决方案1】:

    在您的函数selectAssignments() 中尝试触发change 的change:

    $search.val( term );
    $search.trigger( 'keyup' );
    $search.trigger( 'change' ); //Here
    

    【讨论】:

    • 我之前尝试过 - 没有帮助。不过谢谢回复
    猜你喜欢
    • 1970-01-01
    • 2021-12-27
    • 2017-05-13
    • 2020-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-09
    • 2013-01-27
    相关资源
    最近更新 更多