【发布时间】:2022-08-14 20:17:37
【问题描述】:
我正在使用 jquery 滑块来选择年龄范围。它具有两端的最小值和最大值。当滑块从左右任意一侧拖动时,它会连续触发 N 次 AJAX 调用(如浏览器的 Inspect Element 的 Network 选项卡中所示),直到被拖动并仅在释放滑块时停止。继续拖动,它会不停地触发 AJAX 调用。这使得代码为单个选择更新后端数据库 N 次。但是,我的要求与它目前的运作方式完全相反。 AJAX 调用应该只触发一次,并且当光标从拖动器中释放时也应该触发一次。如何做到这一点? Jquery 似乎没有为此提供默认选项(如果我错了,请纠正我)。
HTML
<div class=\"maxage\">
<form field=\"age_range\">
<div id=\"maxAge\" min=\"18\" max=\"75\" minVal=\"<?php echo $ageRange[0]; ?>\" maxVal=\"<?php echo $ageRange[1]; ?>\"></div>
<input type=\"text\" class=\"slider-text text-end gradient-text mt-2\" id=\"sliderVal\" readonly>
</form>
</div>
jQuery
$(\"#maxAge\").slider({
range: true,
min: parseInt($(\"#maxAge\").attr(\'min\')),
max: parseInt($(\"#maxAge\").attr(\'max\')),
values: [
parseInt($(\"#maxAge\").attr(\'minVal\')),
parseInt($(\"#maxAge\").attr(\'maxVal\'))
],
slide: 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));
}
});
}
});
$(\"#sliderVal\").val($(\"#maxAge\").slider(\"values\", 0) + \"-\" + $(\"#maxAge\").slider(\"values\", 1));
标签: javascript jquery ajax slider jquery-ui-slider