Jquery移动事件延迟

Jquery移动事件延迟,jquery,mobile,Jquery,Mobile,我有一个HTML+jQueryMobile的小仪表板,它包含许多按钮、滑块、复选框、数字输入等 显然,我希望将操作(对字段的更改等)连接到后端的调用。然而,如果有人连续三次按下开关按钮,我不想触发三次后端调用,因为这些按钮的点击实际上会对硬件产生影响 我希望每个按钮/滑块/复选框都能在X秒延迟之后触发后端调用(当我认为用户已经决定输入的数字、滑块或复选框有他们真正想要的值)。 实现这种功能最优雅的方法是什么?当我编写一些ajax调用时,我禁用了按钮,直到后端调用通过或失败。另外,jQuery中有

我有一个HTML+jQueryMobile的小仪表板,它包含许多按钮、滑块、复选框、数字输入等

显然,我希望将操作(对字段的更改等)连接到后端的调用。然而,如果有人连续三次按下开关按钮,我不想触发三次后端调用,因为这些按钮的点击实际上会对硬件产生影响

我希望每个按钮/滑块/复选框都能在X秒延迟之后触发后端调用(当我认为用户已经决定输入的数字、滑块或复选框有他们真正想要的值)。
实现这种功能最优雅的方法是什么?

当我编写一些
ajax
调用时,我禁用了按钮,直到后端调用通过或失败。另外,jQuery中有一个
.one()
方法,根据您想使用它的位置,它可能会有所帮助

$("#input").prop('disabled', true);

如果您特别希望在用户停止输入数据后有x秒的延迟,请使用设置的超时和更新功能。当然,这将导致用户体验滞后

var seconds = 3, timer;

$(function(){

    var update = function(){
        $("#response").append("<p>run updates!</p>");
    }

    $("#slider-1").change(function(){
        if(timer) clearTimeout(timer);
        timer = setTimeout(update, seconds * 1000);
    });

});
var秒=3,定时器;
$(函数(){
var update=函数(){
$(“#响应”)。追加(运行更新!

); } $(“#滑块-1”).change(函数(){ if(定时器)清除超时(定时器); 定时器=设置超时(更新,秒*1000); }); });

下面是一个JSFIDLE,它可能不是最优雅的方式,但应该适合您的情况:

var flag=1;
function resumeEvents() {
    //reset flag to 1 to accept the input again after time
    flag=1;
}

$(function() {
    $("#button").click(function() {
        if(flag==1){
            //perform your task 
            alert("Task performed");
            //set flag to 0 so it doesn't accept more clicks
            flag=0;
            //time to pause before next click is accepted.
            setTimeout(resumeEvents, 3000);
        }
    });

});
摆弄你的场景:

这会起作用,但我希望考虑滑块或复选框的最后一个值(例如,上次更改后的3秒),并将其发送到backend.upopple,不幸的是,这仍然不是我需要的。在我的例子中,用户应该能够摆弄滑块(例如5分钟),但只有当他离开滑块3秒或更长时间后,才会用最后一个值触发对后端的调用。谢谢,禁用不是我想要的。例如,我希望让用户调整滑块,然后在上次更改3秒后触发事件。我查看了.one定义,但我不认为我可以使用它。嗨,乌斯曼,我需要一些稍微不同的东西:我希望考虑滑块或复选框的最后一个值(例如,上次更改后的3秒),并将其发送到后端。此代码立即触发事件,然后在X秒内阻止下一个事件。