1

jquery.rating をフォームに取り込もうとしていますが、「消去」ボタンを押すとエラーが発生し、これがバグなのか何か間違っているのかわかりません。私は最新バージョンで作業しています。

このコードはエラーを再現します (必ず jquery.rating の .zip ファイルをダウンロードし、 starrate」というフォルダーに展開してください)。

<!DOCTYPE HTML>
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">


</head>

<body>

<script src='starrate/jquery.js' type="text/javascript" language="javascript"></script>

<script src='starrate/jquery.MetaData.js' type="text/javascript" language="javascript"></script>
<script src='starrate/jquery.rating.js' type="text/javascript" language="javascript"></script>
<link href='starrate/jquery.rating.css' type="text/css" rel="stylesheet" />



<form action="#" method="post" class="stdform" id="ratingform">


<input type="radio" class="starrate" name="the_rating" value="1" id="rate1" title="choice 1" />
<input type="radio" class="starrate" name="the_rating" value="2" id="rate2" title="choice 2" /> 
<input type="radio" class="starrate" name="the_rating" value="3" id="rate3" title="choice 3" checked="checked" /> 
<input type="radio" class="starrate" name="the_rating" value="4" id="rate4" title="choice 4" /> 
<input type="radio" class="starrate" name="the_rating" value="5" id="rate5" title="choice 5" />

<span id="choice" style="margin:0 0 0 20px;">choice 0</span>

</form>

<script type="text/javascript">
    $(function () {
        $('#ratingform input:radio[name="the_rating"]').rating({
            focus: function(value, link){
                var tip = $('#choice');
                tip[0].data = tip[0].data || tip.html();
                tip.html(link.title || 'value: '+value);
            },
            blur: function(value, link){
                if ( !this.checked ) {
                    var tip = $('#choice');
                    $('#choice').html(tip[0].data || '');
                }
            }, 
            callback: function(value, link){
            }
        });
    });
</script>

</body>

</html>

星の左側にある「削除」ボタンを押した場合を除いて、すべて正常に動作しています。ChromeCannot set property 'checked' of undefinedでは、IE9 ではほぼ同じ意味のオランダ語のエラー メッセージが表示されます (SCRIPT5007: Kan de waarde van de eigenschap checked niet instellen: het object is null of niet gedefinierd)。

どちらも jquery.rating.js の同じコード行、つまり「$(input)[0].checked=true;」を指しています。コードの一部を次に示します。

[...]
        // Update rating control state
        this.data('rating', control);
        // Update display
        this.rating('draw');
        // find data for event
        var input = $( control.current ? control.current.data('rating.input') : null );
        // change selection - required since 1.9, see http://code.google.com/p/jquery-star-rating-plugin/issues/detail?id=123
ERROR:      $(input)[0].checked=true;

ここで何が起こっているのか、誰にもわかりませんか?

4

0 に答える 0