選択した値から星を初期化しました。
問題は、星をクリックすると、星全体の初期化が台無しになることです。
星を初期化するためのより良い、より一貫した方法で誰かが私を助けてくれれば幸いです。
星のコードはここにありますhttp://jsfiddle.net/wSMEc/6/
ありがとう
選択した値から星を初期化しました。
問題は、星をクリックすると、星全体の初期化が台無しになることです。
星を初期化するためのより良い、より一貫した方法で誰かが私を助けてくれれば幸いです。
星のコードはここにありますhttp://jsfiddle.net/wSMEc/6/
ありがとう
フォーカスの変更はユーザーが星をクリックしたときにのみ機能するため、初期化がどこで行われているかは実際にはわかりませんでした。フォーカス変更関数から値を取り出して、ready 関数に設定するのも良いと思います。
以下は機能しますが、いくつかの場所でさらにクリーンアップできます。評価システムを 1 ~ 5 つ星から 1 ~ 10 つ星に変更したり、その他のハードコーディングを回避したい場合に備えて、スロットを 5 に設定したくないかもしれません。
function init(value, slots) {
vstring = value.toString();
vlength = vstring.length;
for (var i = 0; i < vlength; i++)
{
character = vstring.charAt(i);
charNumber = slots - Number(character);
rgroup = 'rating' + i;
$('input:radio[name='+rgroup+']')[charNumber].checked = true;
}
}
jQuery(document).ready(function() {
var value = 2123;
var slots = 5;
$('.rating').focus();
init(value, slots);
$('.rating').bind('focus change', function(event) {
changed = event.target.id;
var id_number = changed.split("star")[1] - 1;
var row = Math.floor(id_number / slots);
var col = id_number % slots;
var stringValue = value.toString();
stringValue = stringValue.substr(0, row) + col + stringValue.substr(row + 1);
value = Number(stringValue);
var rgroup = $(this).find("input:last").attr('name');
alert(rgroup);
$('input:radio[name='+rgroup+']')[value].checked = true;
});