Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 选择2插件由_Javascript_Jquery_Jquery Select2 - Fatal编程技术网

Javascript 选择2插件由

Javascript 选择2插件由,javascript,jquery,jquery-select2,Javascript,Jquery,Jquery Select2,这里是新手 首先,我的英语还不能很好地描述我现在面临的问题,所以请考虑下面的代码 $('#selectOriginAirport, #selectDestinationAirport').select2({ placeholder: 'Select Airport', ajax: { url: '{{url('get-airports')}}', dataType: 'json',

这里是新手 首先,我的英语还不能很好地描述我现在面临的问题,所以请考虑下面的代码

$('#selectOriginAirport, #selectDestinationAirport').select2({
            placeholder: 'Select Airport',
            ajax: {
                url: '{{url('get-airports')}}',
                dataType: 'json',
                delay: 250,
                data: function(params){
                    return { keyword: params.term };
                },
                processResults: function(datas, params) {
                    return {
                        results: $.map(datas.data, function(item) {
                            return {
                                text: item.cityName + ' - '+item.airportName + ' ('+item.airportCode+')',
                                id: item.airportCode+'|'+item.cityName,
                                lat: item.airportLatitude,
                                lon: item.airportLongitude
                            }
                        })
                    };
                },
                cache: true
            },
            escapeMarkup: function (markup) { 
                // console.log('markup >>> ' + markup);
                return markup; 
            },
            minimumInputLength: 3,
            templateResult: function(data) {
                // console.log('data >>> ' + data);
                if(data.loading) {
                    return data.text;
                }
                var markup = '<p>'+data.text+'</p>';
                return markup;
            },
            templateSelection: function(data) {
                console.log(data);
                if($(this).is('#selectOriginAirport')){
                    console.log('pepaya');
                    $("[name='flightOriginLat']").val(data.lat);
                    $("[name='flightOriginLon']").val(data.lon);
                }
                if($(this).is('#selectDestinationAirport')){
                    console.log('kates');
                    $("[name='flightDestinationLat']").val(data.lat);
                    $("[name='flightDestinationLon']").val(data.lon);
                // }
                return data.airportName || data.text;
            }
        });
首先看一看,我通过selectOriginAirport和selectDestinationAirport启动select2

问题是我需要在templateSelection函数上设置一个条件,但它不起作用,结果是这两个逻辑函数都没有执行

这是我需要解决的问题我希望你明白我的意思
提前感谢

我检查了select2的源代码,看起来select2确实将容器作为templateSelection选项中的第二个参数传递。下面是select2.js中的相关片段

SingleSelection.prototype.display = function (data, container) {
  var template = this.options.get('templateSelection');
  var escapeMarkup = this.options.get('escapeMarkup');

  return escapeMarkup(template(data, container));
};
我使用它和JSFiddle的/echo/json作为示例AJAX,创建了一个工作片段:

相关代码:

根据容器ID,可以选择适当的属性。希望这有帮助

templateSelection: function(selection,inst) {
   if(inst && inst.length) {
       return inst.attr('id') === 'select2-user-email-address-container' ? selection.email : selection.id;
   }
}