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>

一切正常,除非我按下星星左侧的“删除”按钮。在 Crome 我得到Cannot set property 'checked' of undefined,在 IE9 中我得到一个荷兰语错误消息,意思大致相同(SCRIPT5007:Kan de waarde van de eigenschap 检查了 niet instellen:het object is null of niet gedefinieerd)。

它们都指向 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