使用鼠标向上和向下更改值时的UI微调器错误

时间:2013-09-28 06:13:11

标签: jquery html jquery-ui

我将十进制微调器添加到我的站点。

我的价值是56.20。 当我改变使用鼠标滚轮时,我期待57.20,但现在显示57:00。

该功能如下所示:

<script>
  $(function() {
    $( "#spinner" ).spinner({
      step: 1.00,
      numberFormat: "n"
    });

    $( "#culture" ).change(function() {
      var current = $( "#spinner" ).spinner( "value" );
      Globalize.culture( $(this).val() );
      $( "#spinner" ).spinner( "value", current );
    });
  });
  </script>

我已加入demo too

2 个答案:

答案 0 :(得分:3)

我不认为这是一个很遗憾的错误,它只是简单地说 - 我认为这是spinner.js中jQuery代码中的一部分向上:

_spin()

期间
value = this._adjustValue( value + step * this._increment( this.counter ) );

致电_adjustValue()

_adjustValue: function( value ) {
    var base, aboveMin,
        options = this.options;

    // make sure we're at a valid step
    // - find out where we are relative to the base (min or 0)
    base = options.min !== null ? options.min : 0;
    aboveMin = value - base;

    // - round to the nearest step
    aboveMin = Math.round(aboveMin / options.step) * options.step;

    // - rounding is based on 0, so adjust back to our base
    value = base + aboveMin;

    // fix precision from bad JS floating point math
    value = parseFloat( value.toFixed( this._precision() ) );

    // clamp the value
    if ( options.max !== null && value > options.max) {
        return options.max;
    }
    if ( options.min !== null && value < options.min ) {
        return options.min;
    }

    return value;
},

来源jQuery UI GitHub

但你可以尝试的是,在旋转之前抓住价值。然后根据您之前使用以下两个回调事件所做的事情,在完成旋转后重新调整该值:

var beforeSpin = 1.00;

$( "#spinner" ).spinner({
      step: 1.10,
      numberFormat: "n",
      start: function( event, ui ) {
          beforeSpin = ui.value;
      },
      //or stop: function(){}
      spin: function( event, ui ) {
          //Do some re-value
          //funciton based on old value
      }
});

那,或者根据你的需要重新编程_adjustValue: function() - 毕竟是开源的:)

答案 1 :(得分:0)

这里的一切看起来都不错,只需将步骤设置为1.10。

示例:

$( "#spinner" ).spinner({
  step: 1.10,
  numberFormat: "n"
});

窥视DEMO

我应该补充一点,你可以相应地调整增量值。