Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

tooltips of selected elements in select2 component

In my project I'm using select2 component. To my selected elements I added icon and description. Code is something like this:

function format(profile_opt) {
        return profile_opt.text + "<br><span class=\"description_select2\"><i>" + $(profile_opt.element).attr('title') + "</i></span><br>" +
        ($(profile_opt.element).attr('start').length==0?'':('from: <b>' + $(profile_opt.element).attr('start') + '</b>')) + ($(profile_opt.element).attr('end').length==0?'':(' to: <b>' + $(profile_opt.element).attr('end') + '</b>')) + 
        " <a href=\"#\" onclick=javascript:showUrlInDialogWithOptionId(\"<%=request.getContextPath()%>/assignments_date_set.jsp\",\"" + profile_opt.id + "\",\"" + $(profile_opt.element).attr('start') + "\",\"" + $(profile_opt.element).attr('end') + "\")>" +
        "<img src=\"images/icons/small/grey/clock.png\" title=\"Set start and end assignment dates\" alt=\"Set start and end assignment dates\" class=\"clock\" id=\"clock\" width=\"20px\" height=\"20px\"></a>";
    }

    function format2(profile_opt){
        return profile_opt.text +"<br><span class=\"description_select2\"><i>" + $(profile_opt.element).attr('title') + "</i></span>";
    }

    $('#selected_profiles').select2({ allowSelectAllNone: true, closeOnSelect:false, width: '600px', placeholder: 'Click to select', 
        formatResult: format2,
        formatSelection: format,
        escapeMarkup: function(m) { return m; }
        });

My question is: how to set tooltips to be only substring of format option element. I mean I need only beginning of the tooltip not this whole syntax with html inside. Thanks in advance for any help.

like image 903
user2750311 Avatar asked Nov 11 '22 02:11

user2750311


1 Answers

Add these 2 parameters in the select2 constructor :

formatResult: format,
formatSelection: format

And then define the format function like below outside the select2 constructor:

function format(item) {
    var originalText = item.text;
    return "<div title ='" + originalText + "'>" + originalText + "</div>";
}

Original post is here

like image 123
Tuna Avatar answered Nov 15 '22 06:11

Tuna