我得到了一个很好的结果补丁如下foundation.js。
我可以使用滑块平滑地更改值(没有闪烁),但我不能将文本框(aria-controls)减少到 0 以下,因为他的事件处理程序没有触发。
@@ -6953,13 +6953,14 @@
'id': id,
'max': this.options.end,
'min': this.options.start,
+ 'offset': this.options.offset,
'step': this.options.step
});
this.handles.eq(idx).attr({
'role': 'slider',
'aria-controls': id,
- 'aria-valuemax': this.options.end,
- 'aria-valuemin': this.options.start,
+ 'aria-valuemax': this.options.end + this.options.offset,
+ 'aria-valuemin': this.options.start + this.options.offset,
'aria-valuenow': idx === 0 ? this.options.initialStart : this.options.initialEnd,
'aria-orientation': this.options.vertical ? 'vertical' : 'horizontal',
'tabindex': 0
@@ -6978,8 +6979,8 @@
key: '_setValues',
value: function _setValues($handle, val) {
var idx = this.options.doubleSided ? this.handles.index($handle) : 0;
- this.inputs.eq(idx).val(val);
- $handle.attr('aria-valuenow', val);
+ this.inputs.eq(idx).val(val+this.options.offset);
+ $handle.attr('aria-valuenow', val+this.options.offset);
}
/**
@@ -7033,7 +7034,8 @@
} else {
//change event on input
value = this._adjustValue(null, val);
- hasVal = true;
+ value = value - this.options.offset;
+ hasVal = true;
}
this._setHandlePos($handle, value, hasVal);
@@ -7286,7 +7288,13 @@
* @option
* @example false
*/
- invertVertical: false
+ invertVertical: false,
+ /**
+ *
+ * @option
+ * @example 0
+ */
+ offset: 0
};
function percent(frac, num) {
然后,例如我想在js中将参数“音频音量”从-24更改为24:
// Audio Volume
vartxt = GetParameter("AudioVolume") // get the value in some way
tval = parseFloat(vartxt);
document.DeviceConfig.AudioVolTxtbox.value = tval - 24; //change the textbox
var target = document.getElementById("slidervol");
var options = {
"start": 0,
"end": 48,
"decimal": 0,
"step": 1,
"offset": -24,
"initialStart": tval
};
var elem = new Foundation.Slider($(target), options);
目前我遇到的唯一问题是我必须将输入框配置为“文本”,因为如果我将其设置为“数字”,则微调器不允许低于 0。