星级评定

时间:2012-08-08 02:51:58

标签: jquery initialization rating rating-system

我从选定的值中初始化了星星。

问题是当我点击星星时,整个星星初始化都搞砸了。

如果有人能帮助我以更好,更一致的方式初始化星星,我将不胜感激。

可以在http://jsfiddle.net/wSMEc/6/

找到星星的代码

由于

1 个答案:

答案 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;
});