Я использую 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='$("#" + idPopOver + "").popover("hide");'>×</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);
У вас есть какие-нибудь идеи, чтобы решить это? Спасибо!