0

我让星星从选定的值初始化。

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

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

星星的代码可以在这里找到http://jsfiddle.net/wSMEc/6/

谢谢

4

1 回答 1

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;
});
于 2012-11-27T16:09:14.750 回答