javascript - 现在 Jquery 的 .unload 已弃用,取消设置提交按钮文本的正确方法

标签 javascript jquery html

设置 - 具有许多条件的大型搜索作为通过 html 提交按钮的 POST,在服务器发送第一个字节/结果页面开始加载之前可能需要几秒钟。

http://api.jquery.com/unload/现已弃用(从 1.8 版开始),我正在寻找执行以下操作的正确方法...

当有人点击搜索按钮时,我通过将按钮文本设置为“正在搜索...”来给用户一点反馈,然后允许提交继续(返回 true):

    $('#dosearch').click(function() { 
        $(this).html('<i class="icon-spinner icon-spin"></i> Searching...');
        return true; 
    });

在卸载期间,我目前正在这样做:

   $(window).unload(function() {
        $('#dosearch').html('<i class="icon-search"></i> Search');
    });

我尝试绑定(bind)到 beforeunload,但是提交一发生就触发(坏),而不是浏览器开始呈现新页面(好)。

问题是如果他们点击搜索然后点击浏览器上的“返回”按钮。如果他们这样做,那么搜索...文本仍然会显示。

做我在这里尝试的事情的正确/正确方法是什么?

注意:(使用 I 标签的原因是我使用的字体很棒)。

最佳答案

绑定(bind)一个空的事件处理程序以卸载似乎可行,但这有点像 hack。

    $('#dosearch').click(function() { 
        $(this).html('<i class="icon-spinner icon-spin"></i> Searching...');
        return true; 
    });

    $(window).on("load", function(){ 
        $('#dosearch').html('<i class="icon-search"></i> Search'); 
    });

    $(window).on("unload", function(){ 
        // Leave this blank handler here or onload won't fire on IE or FF when you click back button 
    });

参见 this question进行解释。

关于javascript - 现在 Jquery 的 .unload 已弃用,取消设置提交按钮文本的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16019686/

相关文章:

javascript - 获取用户代理值。服务器端与客户端?

在执行上一条语句之前显示 Javascript 警告框

javascript - 根据点击的链接显示/隐藏 UL

c# - 使用拖放的网站

html - 在 META TITLE 标签中重复 TITLE 文本有什么好处吗?

javascript - react 路由器 - 无法传递存储

javascript - 如何正确添加变量?输出不当?

javascript - 在表单提交时将 Javascript 数组发送到 ruby​​ Controller

javascript - 如何处理 Facebook javascript SDK 事件?

javascript - 如何清除 jQueryMobile 中外部页面的文本字段值