带jQuery的HTML5范围滑块有时不会达到最大值或最小值

带jQuery的HTML5范围滑块有时不会达到最大值或最小值,jquery,html,input,range,Jquery,Html,Input,Range,我有一个相当简单的表单,其中只有一个HTML5范围元素(呈现为滑块)。其代码如下所示: <form name="redform" id="redform" action="/"> <input id="id" name="id" type="hidden" value="<?php echo $row['id']; ?>" /> <input id="sliderRed" name="sliderRed" ty

我有一个相当简单的表单,其中只有一个HTML5范围元素(呈现为滑块)。其代码如下所示:

<form name="redform" id="redform" action="/">
    <input id="id"        name="id"        type="hidden" value="<?php echo $row['id']; ?>" />
    <input id="sliderRed" name="sliderRed" type="range"  value="<?php echo $data[5]; ?>" min="0" max="255" />
</form>
<p class="note">Current value: <span id="redValue">0</span></p>
<div style="text-align:center; color:#FF0000" id="redresults"></div>
所有这些都有效。我可以移动滑块,值会实时更新,释放滑块时会运行PHP脚本。奇怪的是。范围滑块的最大值和最小值分别设置为0和255。但是,有时,将滑块一直拖到一端时,它只会碰到1或254。当这种情况发生时,似乎没有任何规律可循。有时它能达到最大范围,有时它不能达到最大范围。即使按住鼠标并来回拖动鼠标,情况也是如此

如果最大值和最小值分别更改为256和-1,则会观察到类似的行为。有时最大值为256,有时最大值为255。在底部,它有时会达到-1,有时只能向下拖动到0。这向我表明,这与实际数字无关,而是与一些奇怪的“一个接一个”错误有关

有什么想法吗?我完全被难住了…

使用setTimeout()将mouseup回调的执行延迟10毫秒左右

更新

为了澄清这一点,以下代码应该起作用。我以前也遇到过同样的问题,设置一个小延迟就解决了这个问题。(经过进一步思考,我想不起所需延迟的确切持续时间;如果实现此代码并且问题仍然存在,则可能会增加延迟值。)


您可以考虑使用“停止”对象以获得更好的性能。请参阅。

,虽然提供的建议非常好(谢谢Jason)。值得解释的是,为什么会出现这个问题。我把它作为一个bug提交给chrome bug跟踪器,认为它可能是一个chrome bug。我说对了一半。请看这里的帖子:

问题是,如果滑块的长度不超过256像素,则不可能选择所有值。使用CSS,您可以将宽度更改为256px,这消除了我在问题中描述的问题

<input id="sliderRed" name="sliderRed" stlye="width:256px;" type="range"  value="<?php echo $data[5]; ?>" min="0" max="255" />

在这里工作正常:但有时它会出错:/如果有时它会出错,那么根据定义它不会正常工作。我在您发布的JSFIDLE中遇到了相同的问题。有时只能拖到1或254。谢谢-抱歉我的无知,但是,我应该把这个函数放在哪里呢?我在$.post之前添加了超时,但没有任何帮助。请参阅下面的答案-这是chromium如何处理小于请求范围的滑块的一个解决方法。我更喜欢在html中定义滑块,因为我通过PHP拉入初始值。您可以使用
$(“.selector”).slider({value:})中的行初始化它
$('#sliderRed').mouseup(function() {
    setTimeout(function() {
        $.post('process.php',  $("#redform").serialize(), function(data) {
            $('#redresults').html(data);
            $('#redresults').fadeIn('slow').delay(2000).fadeOut('slow');
        });
    }, 10);
});
<input id="sliderRed" name="sliderRed" stlye="width:256px;" type="range"  value="<?php echo $data[5]; ?>" min="0" max="255" />