【问题标题】:How do I programmatically change the value of <input type="range" ...?如何以编程方式更改 <input type="range" ... 的值?
【发布时间】:2011-01-28 19:49:18
【问题描述】:

我是trying,使用页面上任意位置的鼠标滚轮更改范围滑块的值,但我不知道如何以编程方式更改输入值。

这是我的代码:

HTML

<input id="slider" type="range" min="0" max="100" step="1" value="50">

Javascript

$(window).mousewheel(function(event, delta){
    $('#slider').val($('#slider').val()*1 + delta);
});

// Another thing I tried, but didn't work:
/*
$('#slider').attr('value', oldval + 1);
*/

任何指针表示赞赏。

【问题讨论】:

  • 这里可以正常工作(Google Chrome 9.0.597.83),但您应该考虑检查输入是否有焦点,将$(window) 更改为$('#slider')
  • @Joshua 感谢您的提示!用鼠标滚轮移动滑块是个好主意!
  • 另外,如果任何浏览器为该功能添加了本机支持,那么您的解决方案将失败,请尝试阻止该事件。
  • 似乎在 Firefox 3.6.13 中运行良好。在什么浏览器下不工作?
  • @M28 焦点似乎不是问题。我向事件处理程序添加了一个警报并收到了警报...(我也在使用 chrome)

标签: javascript html input


【解决方案1】:

它被解释为一个字符串。使用这个

$(window).mousewheel(function(event, delta){
    $('#slider').val($('#slider').val()*1 + delta);
//    var oldval = $('#slider').attr('value');
//    if(delta > 0)
//        document.getElementById('slider').value++;
//    else
//        document.getElementById('slider').value--;
});

// Another thing I tried, but didn't work:
/*
$('#slider').attr('value', oldval + 1);
*/

【讨论】:

  • 嗯,我在 jsfiddle 中尝试过,但没有成功。我会尝试使用 parseInt。
  • @cyberkiwi 你能分享一下 jsfiddle 链接吗?
  • 我使用的是 Chrome 10.0.684.6 开发版。虽然它在 Firefox 中有效。不幸的是,Firefox 将 input type="range" 呈现为文本框。
  • 我使用的是 Chrome 8.0.552.. notebook 和 Fx 1.6,现在没有鼠标滚动
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-02
  • 2016-12-10
  • 2013-04-27
  • 1970-01-01
  • 2013-04-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多