2016-04-19 18 views
4

私は5つの星を使って映画を評価する評価システムを作っています。私はこれにjQuery bar pluginを使用します(jQuery bar plugin)。jQueryの星評価プラグインの変数が正しく返されない

誰かが1から5まで投票できます。データはデータベースに保存されます。誰かが投票した後、星は無効になり、ユーザーが評価した星の量が表示されます。

プラグインの値がinitialRatingの場合、選択された星の数が定義されます。したがって、この変数が4の場合、4つの星が色付けされます。

ハードコードの場合は、たとえばinitialRating: 4となります。 initialRating: currentRating(投票した星の金額)を使用すると、正しい金額が返されず、1つ星だけが表示されます。 console.logcurrentRatingの場合、4が返されます。

の代わりにハードコーディング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

歓声メイト:)... – SamGhatak

答えて

1

可変currentRatingプラグインがintegerを期待しているのに対し、stringです。

integerに変換すると、parseInt()が問題を解決します。

コード

currentRating = parseInt(currentRating);

+0

"currentRating"文字列が "0"で始まらないようにしましょう。例えば "010" = 8 ...常に 'parseInt(currentRating、10);'を使用してくださいブラウザにはこのような問題がありません) –

関連する問題