我从选定的值中初始化了星星。
问题是当我点击星星时,整个星星初始化都搞砸了。
如果有人能帮助我以更好,更一致的方式初始化星星,我将不胜感激。
可以在http://jsfiddle.net/wSMEc/6/
找到星星的代码由于
答案 0 :(得分:0)
我确实没有看到初始化发生的位置,因为焦点更改仅在用户点击星标时才会运行。我认为将焦点更改函数中的值拉出并将其设置为就绪函数也会更好。
以下工作虽然可以在几个地方进一步清理。就像你不想将插槽设置为5,以防你想要将你的评级系统从1星改为5星到1到10星以及其他硬编码避免。
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;
});