web-dev-qa-db-fra.com

Faire fonctionner bootstrap popover avec un modèle html personnalisé

J'utilise une zone de texte de groupe d'entrée et j'ai besoin du popover Bootstrap 3 pour fonctionner et le modèle de popover doit être défini & n conçu par moi. Donc le html que j'ai actuellement avec moi est:

<div class="row">
        <div class="col-sm-2">
            <div class="input-group">
                <input type="text" class="form-control jq-timePicker" value="09:30">
                <span class="input-group-addon" rel="popover">
                    <span class="glyphicon glyphicon-time"></span>
                </span>
            </div>
        </div>
</div>

Je veux qu'un popover s'ouvre lorsque l'icône du groupe de saisie est cliquée. Dans ce cas, lorsque l'intervalle avec la classe glyphicon-time est cliqué, un popover est ou affiché avec le code HTML suivant:

<div class="timePickerWrapper popover">
            <div class="arrow"></div>
            <div class="popover-content">
                <div class="timePickerCanvas"></div>
                <div class="timePickerClock timePickerHours"></div>
                <div class="timePickerClock timePickerMinutes"></div>
            </div>
        </div>

JS a écrit:

$(document).ready(function () {
    var popoverTemplate = ['<div class="timePickerWrapper popover">',
        '<div class="arrow"></div>',
        '<div class="popover-content">',
        '<div class="timePickerCanvas"></div>',
        '<div class="timePickerClock timePickerHours"></div>',
        '<div class="timePickerClock timePickerMinutes"></div>',
        '</div>',
        '</div>'].join('');


    $('body').popover({
        selector: '[rel=popover]',
        trigger: 'click',
        template: popoverTemplate,
        placement: "bottom",
        html: true
    });
});

Voir le violon ici: http://www.bootply.com/4fMzxGRpik

Quelqu'un peut-il m'aider à corriger l'erreur que je fais et ce qui doit être fait pour afficher un popvhover.

20
Maninder

il vous manque le contenu du popover, vous aurez besoin de quelque chose comme ça

$(document).ready(function () {
    var popoverTemplate = ['<div class="timePickerWrapper popover">',
        '<div class="arrow"></div>',
        '<div class="popover-content">',
        '</div>',
        '</div>'].join('');

    var content = ['<div class="timePickerCanvas">asfaf asfsadf</div>',
        '<div class="timePickerClock timePickerHours">asdf asdfasf</div>',
        '<div class="timePickerClock timePickerMinutes"> asfa </div>', ].join('');


    $('body').popover({
        selector: '[rel=popover]',
        trigger: 'click',
        content: content,
        template: popoverTemplate,
        placement: "bottom",
        html: true
    });
});

Démo de travail

21
code-jaff

Je préférerais avoir tout le HTML dans les modèles. Ça va comme ça:

Quelque chose en Javascript

$(".btn").popover({
   template: $("#selector").html(),
   placement: "auto"
});

Et en HTML

<div id="selector">
    Anything you want in your popovers, either dynamic or static
<div>
2
MaoD

@ code-jaff qui est une excellente réponse, mais j'ai remarqué que le popover de la démo de travail ne semble pas sortir du bouton. Si cela arrive à quelqu'un d'autre, essayez d'ajouter container: 'body' aux options popover. Comme ça:

$('body').popover({
    selector: '[rel=popover]',
    trigger: 'click',
    content: content,
    template: popoverTemplate,
    placement: "bottom",
    html: true,
    container: 'body'
});
1
Alejandro Plaza