2016-04-19 3 views
4

Я делаю систему рейтинга, чтобы оценить фильм, используя 5 звезд. Для этого я использую jQuery bar plugin (jQuery bar plugin).переменная плагина jQuery звезды неверно возвращается

Кто-то может голосовать от 1 до 5. Данные хранятся в базе данных. После того, как кто-то проголосует, звезды будут отключены и покажут количество звезд, оцененных пользователем.

Значение initialRating плагина определит, сколько звезд выбрано. Поэтому, если эта переменная составляет 4, 4 звезды будут окрашены.

Если у меня жесткий код, например initialRating: 4, он работает. Хотя, когда я использую initialRating: currentRating (проголосованное количество звезд), он не вернет правильное количество, и он просто покажет 1 звезду. Когда я console.logcurrentRating он вернется 4.

Так как же получается, что hardcoding 4 работает, а не currentRating (со значением 4), который не работает.

код

$(function() { 

    currentRating = $(".rating").val(); //Getting the value that someone vote previously 
    console.log(currentRating); // Displays 4 

    $('#rating').barrating('show', { 
     theme: 'fontawesome-stars', 
     showSelectedRating: true, 
     initialRating: currentRating, 
     onSelect: function (value, text) { 
      movieTitle = $('.movie-name'). text(), 
       tmdb_id = $(".imdb_id").val(), 
       _token = $(".csrf_field").val(); 

      $.ajax({ 
       headers: { 
        'X-CSRF-TOKEN': _token 
       }, 
       method: "POST", 
       url: "/movies/" + tmdb_id + "/rate", 
       data: { 
        title: movieTitle, 
        tmdb_id: tmdb_id, 
        rating: value 
       }, 
       success: function (result) { 
        $("#div1").html(result); 
       } 
      }); 
     } 
    }); 
}); 

enter image description here

+1

вы можете добавить скрипку с более простой версией коды? – SamGhatak

+1

Нашли ошибку, спасибо в любом случае! –

+0

cheers mate:) ... – SamGhatak

ответ

1

Переменная currentRating является string в то время как плагин ожидает integer.

Преобразование string в integer с использованием parseInt() решит проблему.

Код

currentRating = parseInt(currentRating);

+0

Давайте просто надеемся, что ваша строка currentRating не начинается с «0», например «010» = 8 ... всегда используйте 'parseInt (currentRating, 10);' (хотя кажется позже браузеры не имеют этой фиалки) –

Смежные вопросы