目前,我的range输入上的onChange事件在每一步都会触发。
有没有办法阻止这个事件触发,直到用户松开滑块?
我正在使用范围来创建一个搜索查询。我希望能够在每次表单更改时运行搜索,但在滑块移动的每一步都发出搜索请求太多了。
下面是代码原样:
HTML:
<div id="page">
<p>Currently viewing page <span>1</span>.</p>
<input class="slider" type="range" min="1" max="100" step="1" value="1" name="page" />
</div>
JavaScript:
$(".slider").change(function() {
$("#query").text($("form").serialize());
});
这有帮助吗?
发布于 2011-03-02 20:59:08
一个问题是,AFAIK的HTML5并没有定义何时触发onchange
事件,所以它很可能在不同的浏览器上是不同的。您还必须考虑到,浏览器实际上不必将input type=range
呈现为滑块。
您唯一的选择是,您必须内置一种机制,以确保您的搜索不会被频繁触发,例如,检查搜索当前是否正在运行并在运行时中止,或者确保搜索最多每x秒触发一次。
后者的快速示例(只是一个快速的hack,未经测试)。
var doSearch = false;
function runSearch() {
// execute your search here
}
setInterval(function() {
if (doSearch) {
doSearch = false;
runSearch();
}
}, 2000); // 2000ms between each search.
yourRangeInputElement.onchange = function() { doSearch = true; }
https://stackoverflow.com/questions/5165579
复制相似问题