Я добавил десятичный счетчик на свой сайт.
Моя ценность была 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>
Я тоже включил демо
Я не думаю, что это ошибка, извините, скажем, она просто округляет - я думаю, что это часть кода jQuery внутри spinner.js, которая выполняет округление:
Во время _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()
для ваших нужд - Open Source в конце концов :)
Здесь все выглядит хорошо, просто установите шаг 1.10.
Пример:
$( "#spinner" ).spinner({
step: 1.10,
numberFormat: "n"
});
Подглядеть ДЕМО
Я должен добавить, что вы можете соответствующим образом настроить значение приращения.
1
только при первом клике, а затем на1.1
при последовательных кликах, тем самым разрушая эффект.