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;
ここで何が起こっているのか、誰にもわかりませんか?