Select2 запускается загрузчик popover - PullRequest
0 голосов
/ 01 сентября 2018

Я использую select2 с Ajax и Bootstrap PopOver . Я хочу запустить из select2 popover, когда пользовательская цифра больше, чем x char. Я сделал это, но у меня всегда есть ошибка из браузера.

Ошибка из браузера:

computeAutoPlacement.js:24 Uncaught TypeError: Cannot read property 'indexOf' of undefined
at O (computeAutoPlacement.js:24)
at Object.onLoad (applyStyle.js:57)
at index.js:69
at Array.forEach (<anonymous>)
at new t (index.js:67)
at i.t.show (tooltip.js:286)
at HTMLDivElement.<anonymous> (popover.js:166)
at Function.each (jquery.min.js:3)
at init.each (jquery.min.js:3)
at init.i._jQueryInterface [as popover] (popover.js:149)

Мой код:

$("#idSelectPacketName").select2({
    cache: true,
    tags: true,
    placeholder: "Insert name of packet",
    tokenSeparators: [','],
    ajax: {
        url: '.getName.php',
        type: "post",
        dataType: 'json',
        delay: 250,
        data: function (params)
        {
            return {
                searchTerm: params.term, // search term
                actionId: "getSelector",
                jsonField: "idSelectPacketName"
            };
        },
        processResults: function (response)
        {
            return {
                results: response,
                id: response.term,
                text: response.term + " (new)",
                newOption: true
            };
        },
    },
    createTag: function (params)
    {
        var term = $.trim(params.term);

        if (term === '')
        {
            return null;
        }
        console.log(term.length);
        if(term.length>50)
        {
            launchGenericPopOver("idShowWherePutVolumeInput", errorTitle, "max 50 char" , "up");
            return null;
        }
        return {
            id: term,
            text: term + ' (new)'
        };
    },
});

The function that launch the popover is 

launchGenericPopOver("idX", errorTitle, "max 50 char" , "up");

Функция:

   function launchGenericPopOver(idPopOver, title, content, placement)
{
    $("#" + idPopOver).popover({
        html: true,
        trigger: 'manual',
        title:   "<div class='container' style='margin: 0px; padding: 0px;'>"+
        "<div class='row'  style='margin: 0px; padding: 0px;'>" +
        "<div class='col-sm-9' style='margin-top: 0.2rem; padding: 0px;'>"+
        title +
        "</div>" +
        "<div class='col-sm-3' style='margin: 0px; padding: 0px;'>"+
        "<button type='button' id='close' class='close' onclick='$(&quot;#" + idPopOver + "&quot;).popover(&quot;hide&quot;);'>&times;</button>" +
        "</div>" +
        "</div>" +
        "</div>",
        //These field are into the input but for one day ;)
        content: content,
        placement: placement,
        delay: {show: 200, hide: 0}
    }).popover('show');

    setTimeout(function ()
    {
        $("#" + idPopOver).popover('hide');
    }, 4000);
}

У вас есть идеи, как это решить? Если я не запускаю поповер, он работает правильно. Если я запускаю поппер в другой зоне (за пределами select2), поповер работает очень хорошо.

Кроме того, если я использую сладкое оповещение (действительно всплывающее окно), оно работает, также с общим оповещением alert("Max char 50);

У вас есть какие-нибудь идеи, чтобы решить это? Спасибо!

...