Подтвердить что ты не робот

Как использовать Звездный рейтинг Font-awesome с Django?

Fontawesome имеет отличное расширение css, которое выглядит потрясающе.

Однако щелчок по любому из элементов span не будет действительно ничего. Я не знаю, как связать это с моей моделью базы данных. Допустим, у меня есть целое поле 0-5 в Django. Как я могу установить значение в соответствии с выбором пользователя в шаблоне?

enter image description here

<span class="rating">
  <span class="star"></span>
  <span class="star"></span>
  <span class="star"></span>
  <span class="star"></span>
  <span class="star"></span>
</span>
4b9b3361

Ответ 1

В итоге я использовал Raty. Если вы ищете простое и чистое решение, я нашел это самым легким.

$('#star').raty('score');                   // Get the current score.

Ответ 2

Я видел этот пост, но не хотел использовать плагин больше, чем мне нужно. Итак, я бросил это вместе для небольшого проекта, над которым я работаю. Вам не нужен бутстрап, чтобы использовать это.

HTML

<div class="star-rating"> 
  <span class="fa fa-star-o" data-rating="1"></span>
  <span class="fa fa-star-o" data-rating="2"></span>
  <span class="fa fa-star-o" data-rating="3"></span>
  <span class="fa fa-star-o" data-rating="4"></span>
  <span class="fa fa-star-o" data-rating="5"></span>
  <input type="hidden" name="whatever" class="rating-value" value="3">
</div>

CSS

.star-rating {
  line-height:32px;
  font-size:1.25em;
  cursor: pointer;
}

CoffeeScript

$star_rating = $('.star-rating .fa')

SetRatingStar = ->
  $star_rating.each ->
    if parseInt($star_rating.siblings('input.rating-value').val()) >= parseInt($(this).data('rating'))
      $(this).removeClass('fa-star-o').addClass('fa-star')
    else
      $(this).removeClass('fa-star').addClass('fa-star-o')

$star_rating.on 'click', ->
    $star_rating.siblings('input.rating-value').val $(this).data('rating')
    SetRatingStar()

SetRatingStar()

JavaScript:

var $star_rating = $('.star-rating .fa');

var SetRatingStar = function() {
  return $star_rating.each(function() {
    if (parseInt($star_rating.siblings('input.rating-value').val()) >= parseInt($(this).data('rating'))) {
      return $(this).removeClass('fa-star-o').addClass('fa-star');
    } else {
      return $(this).removeClass('fa-star').addClass('fa-star-o');
    }
  });
};

$star_rating.on('click', function() {
  $star_rating.siblings('input.rating-value').val($(this).data('rating'));
  return SetRatingStar();
});

SetRatingStar();

Ответ 3

Это лучший плагин для рейтинга звезд, если вы используете бутстрап:

  • 2Kb minified
  • Использование глифов-бутстрапов
  • Нет дополнительных CSS
  • Вам просто нужно добавить class="rating" на вкладку

Проект Github

Ответ 4

Я не видел простого ответа, используя только бутстрап-глификон и jquery. Я уверен, что другие люди пришли сюда, чтобы быстро скопировать и вставить, поэтому я просто написал один.

$(function(){
    $('.rating-select .btn').on('mouseover', function(){
        $(this).removeClass('btn-default').addClass('btn-warning');
        $(this).prevAll().removeClass('btn-default').addClass('btn-warning');
        $(this).nextAll().removeClass('btn-warning').addClass('btn-default');
    });

    $('.rating-select').on('mouseleave', function(){
        active = $(this).parent().find('.selected');
        if(active.length) {
            active.removeClass('btn-default').addClass('btn-warning');
            active.prevAll().removeClass('btn-default').addClass('btn-warning');
            active.nextAll().removeClass('btn-warning').addClass('btn-default');
        } else {
            $(this).find('.btn').removeClass('btn-warning').addClass('btn-default');
        }
    });

    $('.rating-select .btn').click(function(){
        if($(this).hasClass('selected')) {
            $('.rating-select .selected').removeClass('selected');
        } else {
            $('.rating-select .selected').removeClass('selected');
            $(this).addClass('selected');
        }
    });
});
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css" rel="stylesheet"/>
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="rating-select">
    <div class="btn btn-default btn-sm"><span class="glyphicon glyphicon-star-empty"></span></div>
    <div class="btn btn-default btn-sm"><span class="glyphicon glyphicon-star-empty"></span></div>
    <div class="btn btn-default btn-sm"><span class="glyphicon glyphicon-star-empty"></span></div>
    <div class="btn btn-default btn-sm"><span class="glyphicon glyphicon-star-empty"></span></div>
    <div class="btn btn-default btn-sm"><span class="glyphicon glyphicon-star-empty"></span></div>
</div>

Ответ 5

Еще один интересный метод. Чистый CSS, сохраняет выбранное значение, использует радиокнопки (cool!) И шрифты FA

Смотрите демонстрацию

Взято из этого сообщения

HTML

<div class="star-rating">
  <div class="star-rating__wrap">
    <input class="star-rating__input" id="star-rating-5" type="radio" name="rating" value="5">
    <label class="star-rating__ico fa fa-star-o fa-lg" for="star-rating-5" title="5 out of 5 stars"></label>
    <input class="star-rating__input" id="star-rating-4" type="radio" name="rating" value="4">
    <label class="star-rating__ico fa fa-star-o fa-lg" for="star-rating-4" title="4 out of 5 stars"></label>
    <input class="star-rating__input" id="star-rating-3" type="radio" name="rating" value="3">
    <label class="star-rating__ico fa fa-star-o fa-lg" for="star-rating-3" title="3 out of 5 stars"></label>
    <input class="star-rating__input" id="star-rating-2" type="radio" name="rating" value="2">
    <label class="star-rating__ico fa fa-star-o fa-lg" for="star-rating-2" title="2 out of 5 stars"></label>
    <input class="star-rating__input" id="star-rating-1" type="radio" name="rating" value="1">
    <label class="star-rating__ico fa fa-star-o fa-lg" for="star-rating-1" title="1 out of 5 stars"></label>
  </div>
</div>

CSS

.star-rating{
    font-size: 0;
}
.star-rating__wrap{
    display: inline-block;
    font-size: 1rem;
}
.star-rating__wrap:after{
    content: "";
    display: table;
    clear: both;
}
.star-rating__ico{
    float: right;
    padding-left: 2px;
    cursor: pointer;
    color: #FFB300;
}
.star-rating__ico:last-child{
    padding-left: 0;
}
.star-rating__input{
    display: none;
}
.star-rating__ico:hover:before,
.star-rating__ico:hover ~ .star-rating__ico:before,
.star-rating__input:checked ~ .star-rating__ico:before
{
    content: "\f005";
}

Ответ 6

Вы можете проверить мой Bootstrap JQuery Star rating plugin Я создал с различными настраиваемыми параметрами (демонстрации для сценариев включены). Он использует CSS3 как можно больше, но также использует JQuery (если вы в порядке с этим). Вы можете получить номера рейтинга звезды или легко установить его с помощью методов плагинов.

Использует глифокины Bootstrap 3.x, включает поддержку RTL, поддерживает события и методы плагина. Плагин также поддерживает любые дробно заполненные звезды. Здесь вы можете ссылаться на источник .

Если вы заинтересованы в использовании Font-Awesome, вы можете переопределить плагин CSS, чтобы использовать Font-Awesome вместо Glyphicons Bootstrap в вашем проекте.

Ответ 7

Шрифт Awesome и JQuery DEMO

HTML

<div>Rating Star - Function CallBack onChange</div>
<div class="well well-sm">
    <span id="rating_1" class="rating" ></span>
    <span id="result_1"></span> 
</div>
<div>Rating Star - No Editable</div>
<div class="well well-sm">
    <span id="rating_2" class="rating" data-val="2.49" data-stars='6' data-change="false"></span>
    <span>Calificaste con <b>2.49</b> de <b>6</b> Estrellas</span> 
</div>
<div>Rating Star - Tamaño - Data Html options -- Hidden input</div>
<div class="well well-sm">
   <span id="rating_3" class="rating" data-val="2.49" data-stars='10' data-input=".rating-value" data-change="true" style="font-size:35px;" >
        <input type="hidden" name="whatever3" class="rating-value" size="5"  />
   </span>
</div>
<div>Rating Star - javascript Options - input text</div>
<div class="well well-sm">
   <span id="rating_4" class="rating">
       <input type="text" name="whatever4" id="rating_val" size="1" readOnly="readOnly" />    
   </span>
    <span id="result_4"> &nbsp;&nbsp;de <b>10</b> estrellas </span> 
</div>

JavaScript

 $('#rating_1').RatingStar(
   {callback:function(val){$('#result_1').html(" &nbsp;"+val+" estrella(s).")}}
 );

 $('#rating_2').RatingStar();

 $('#rating_3').RatingStar();

 $('#rating_4').RatingStar({
     val:4.95,
     stars:10,
     input:'#rating_val',
     change:true
 });

Ответ 8

var $star_rating = $('.rating .star');

var SetRatingStar = function() {
  return $star_rating.each(function() {


var puan = document.formname.whatever.value;



    if ( parseInt($(this).data('rating')) <= puan) {
      return $(this).removeClass('star').addClass('star filled');
    } else {
      return $(this).removeClass('star filled').addClass('star');
    }
  });
};

$star_rating.on('click', function() { 

  document.formname.whatever.value=$(this).data('rating');

  return SetRatingStar();
});



.rating{unicode-bidi:bidi-override;direction:rtl;font-size:10px;}
.rating span.star{font-family:FontAwesome;font-weight:normal;font-style:normal;display:inline-block}
.rating span.star:hover{cursor:pointer}
.rating span.star:before{content:"\f006";padding-right:5px;color:#999}
.rating span.star:hover:before,.rating span.star:hover~span.star:before{content:"\f005";color:#e3cf7a}
.rating span.star.filled {}
.rating span.star.filled:before{content:"\f005";color:#e3cf7a; }



<span class="rating" style="font-size:20px;">
<span class="star" data-rating="5"></span><span class="star" data-rating="4"></span><span class="star" data-rating="3"></span><span class="star" data-rating="2"></span><span class="star" data-rating="1"></span></span>

Ответ 9

Посмотрите django-ratings - то, что вы ищете.

Ответ 10

Здесь лучшее решение. Звезды основаны только на числах, поэтому поисковая система и браузер просто читают 4.5 из 5 и все. Он использует мой собственный пользовательский шрифт; нет JS, нет SVG, нет Flash, нет холста. Он также доступен как индикатор выполнения.

DEMO/CODE

Здесь код без тегов микроформата, чтобы сделать его проще:

Rating: <span class="star-rating-icons">
<strong>3.5</strong> out of <i>5</i>
</span>

И вот CSS, который включает шрифт и соответствующий стиль:

.star-rating-icons {
    font-family: seostars;
  font-size: 1.2em;
    line-height: .6em;
    position: relative;
    width: 5em;
    text-indent: -5000px;
    display: inline-block;
    font-style: normal;
}
.star-rating-icons strong {
    font-weight: normal;
    display: block;
    position: absolute;
    left: 0px;
    color: #FC0;
    font-family: seostars;
    text-indent: 0;
}
.star-rating-icons strong:first-letter {
    font-weight: bold;
    position: absolute;
    left: 0px;
    font-style: normal;
}
.star-rating-icons i {
    color: #666;
    position: absolute;
    text-indent: 0;
    color: #666;
    left: 0;
}

В основном первая буква рейтинга отформатирована символом с таким количеством целых звезд, а десятичная с частичными звездами. Очертания звезд сделаны из периода, хотя это может быть применено к любому другому присутствующему персонажу. (Редактируя шрифт или просто с псевдоэлементом)

Ответ 11

Рассмотрим Звездные рейтинги с очень маленьким CSS от CssTricks. В нем нет изображений, нет Bootstrap, нет Javascript. Чистые символы CSS и Unicode, см. this. Поддерживается всеми браузерами, кроме IE <= 6.

Примечание. Javascript не требуется для пользовательского интерфейса, но он необходим для отправки данных на сервер и сохранения выбора рейтинга после того, как элемент теряет фокус.

Также посмотрите Доступный звездный виджет с чистым CSS. Это чистый CSS. Использует описанную здесь технику - Пользовательские радио и флажки с использованием CSS. Он отличается от первого таким образом, что рейтинг остается выбранным после того, как элемент теряет фокус. К сожалению, это поддерживается меньшим количеством браузеров.

Быстрая заметка о Селекторы CSS могут быть полезны при чтении этого.

UPDATE:

Просто перечитайте сообщение и нажмите ссылку. Первая ссылка в моем ответе такая же, как тема стартера. Извинения.

В любом случае, я решил не удалять ответ, так как он содержит несколько ссылок, которые я очень рад найти и которые могут быть полезны для других.