如何让jQuery Range滑块仅在松开光标/手指时触发AJAX请求?
解决jQuery滑块拖动时频繁触发AJAX的问题
我使用jQuery UI滑块实现年龄范围选择,拖动滑块(无论左右)时会持续触发多次AJAX请求,直到松开滑块才停止,这导致单次选择操作就多次更新后端数据库。需要实现仅在松开光标/手指时触发一次AJAX请求。
解决方案
jQuery UI滑块其实提供了对应的事件,你只需要把AJAX请求从slide事件移到stop事件中,同时用slide事件仅更新前端显示的滑块值即可:
修改后的jQuery代码
$("#maxAge").slider({ range: true, min: parseInt($("#maxAge").attr('min')), max: parseInt($("#maxAge").attr('max')), values: [ parseInt($("#maxAge").attr('minVal')), parseInt($("#maxAge").attr('maxVal')) ], // 拖动过程中仅更新前端显示,不发AJAX slide: function(event, ui) { $("#sliderVal").val(ui.values[0] + "-" + ui.values[1]); }, // 拖动结束(松开鼠标/手指)时触发一次AJAX stop: function(event, ui) { $.ajax({ type: 'POST', url: 'processes/settings.php', data: 'field=age_range&value='+ui.values[0]+'-'+ui.values[1], success: function(data){ // 可根据后端返回结果添加后续处理逻辑,如成功提示 } }); } }); // 初始化时设置默认显示值 $("#sliderVal").val($("#maxAge").slider("values", 0) + "-" + $("#maxAge").slider("values", 1));
原理说明
slide事件:在滑块拖动过程中持续触发,适合用来实时更新前端的显示内容;stop事件:仅在滑块拖动操作结束(松开鼠标左键/手指离开屏幕)时触发一次,正好满足只发一次AJAX请求的需求。
HTML代码无需修改,保持原代码即可。
内容的提问来源于stack exchange,提问作者Aurazo Script
相关产品推荐
相关产品推荐

