我已经使用了一个代码从this answer风格HTML5输入在我的GRAV CMS网站。
HTML标记的呈现部分:
<div class="form-data" data-grav-field="range" data-grav-disabled="" data-grav-default="40">
<div class="form-input-wrapper ">
<input name="data[space]" value="40" type="range" style="display: inline-block;vertical-align: middle;" oninput="space_output.value = space.value" min="40" max="350" step="10" class="form-input " id="space" required="required">
<output name="data[space]" id="space_output" style="display: inline-block;vertical-align: baseline;padding: 0 0.5em 5px 0.5em;"> 40 </output>
</div>
</div>
JS代码取自上面的答案,并放在custom.js
文件的开头:
document.getElementById("space").oninput = function() {
var value = (this.value-this.min)/(this.max-this.min)*100
this.style.background = 'linear-gradient(to right, #eec170 0%, #eea624 ' + value + '%, #839788 ' + value + '%, #a6d86c 100%)'
};
所以,这部分工作没有任何缺陷。
问题是:
JS代码的输入行为是不正确的,一旦页面加载背景颜色不反映球的位置默认位置40
,因为它不是中心。一旦滑块位置改变,背景颜色的变化取决于滑块的位置。
这是次要的问题,但主要的问题是<output>
字段不再显示新的值。它一直粘在40
上。如何修复它?
第一节第一节第一节第一节第一次
1条答案
按热度按时间zzlelutf1#
试试这个例子,我为calculate range增加了一个(隐藏的)输入,并用form标签 Package 它以从输出中获取值,我还增加了样式,并将梯度计算重构为javascript。