HTML
xxxxxxxxxx
1
<span id="rateMe">
2
<i class="fas fa-star py-2 px-1 rate-popover" data-index="0" data-html="true" data-toggle="popover" data-placement="top" title="Very bad"></i>
3
<i class="fas fa-star py-2 px-1 rate-popover" data-index="1" data-html="true" data-toggle="popover" data-placement="top" title="Poor"></i>
4
<i class="fas fa-star py-2 px-1 rate-popover" data-index="2" data-html="true" data-toggle="popover" data-placement="top" title="OK"></i>
5
<i class="fas fa-star py-2 px-1 rate-popover" data-index="3" data-html="true" data-toggle="popover" data-placement="top" title="Good"></i>
6
<i class="fas fa-star py-2 px-1 rate-popover" data-index="4" data-html="true" data-toggle="popover" data-placement="top" title="Excellent"></i>
7
</span>
CSS
xxxxxxxxxx
1
.rate-popover {
2
cursor: pointer;
3
}
JS
xxxxxxxxxx
1
var $stars;
2
3
jQuery(document).ready(function ($) {
4
5
// Custom whitelist to allow for using HTML tags in popover content
6
var myDefaultWhiteList = $.fn.tooltip.Constructor.Default.whiteList
7
myDefaultWhiteList.textarea = [];
8
myDefaultWhiteList.button = [];
9
10
$stars = $('.rate-popover');
11
12
$stars.on('mouseover', function () {
13
var index = $(this).attr('data-index');
14
markStarsAsActive(index);
15
});
16
17
function markStarsAsActive(index) {
18
unmarkActive();
19
for (var i = 0; i <= index; i++) {
20
$($stars.get(i)).addClass('amber-text');
21
}
22
}
23
24
function unmarkActive() {
25
$stars.removeClass('amber-text');
26
}
27
28
$stars.on('click', function () {
29
$stars.popover('hide');
30
});
31
32
// Submit, you can add some extra custom code here
33
// ex. to send the information to the server
34
$('#rateMe').on('click', '#voteSubmitButton', function() {
35
$stars.popover('hide');
36
});
37
38
// Cancel, just close the popover
39
$('#rateMe').on('click', '#closePopoverButton', function() {
40
$stars.popover('hide');
41
});
42
43
});
44
45
$(function () {
46
$('.rate-popover').popover({
47
// Append popover to #rateMe to allow handling form inside the popover
48
container: '#rateMe',
49
// Custom content for popover
50
content: `<div class="my-0 py-0"> <textarea type="text" style="font-size: 0.78rem" class="md-textarea form-control py-0" placeholder="Write us what can we improve" rows="3"></textarea> <button id="voteSubmitButton" type="submit" class="btn btn-sm btn-primary">Submit!</button> <button id="closePopoverButton" class="btn btn-flat btn-sm">Close</button> </div>`
51
});
52
$('.rate-popover').tooltip();
53
});
54
Console errors: 0