现在不推荐使用Jquery的.unload的正确方法来取消设置提交按钮文本

时间:2013-04-15 16:00:18

标签: 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');
    });

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

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

我正在尝试做什么的正确/正确方法是什么?

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

2 个答案:

答案 0 :(得分:1)

将空事件处理程序绑定到卸载似乎可行,但这有点像黑客。

    $('#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了解相关信息。

答案 1 :(得分:0)

如果用户返回历史记录,则表示该网页是否为新网页?因此,无论何时加载页面,您都可以将值重置为您想要的值。

这可能是什么吗?