2016-11-25 114 views
0

我使用选择二如下插件:选择二阿贾克斯 - 有选择价值观的问题

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?)到programaticly输入值到搜索

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控件(此传递)中输入进行搜索时停止工作,但是当我尝试使用此函数时,它不会从Select2控件运行ajax搜索查询(它打开搜索列表,显示输入的查询,但不火ajax)。那么,使用Select2用户界面搜索的功能是否会破坏此功能?

回答

0

在你的函数selectAssignments()尝试触发select2change

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

我尝试之前 - 无济于事。但谢谢你的回复 – user3057544