Jquery 离开页面时提示保存

本文介绍了一个jQuery插件,该插件用于检测表单字段的变化,并在用户尝试离开页面前提示确认信息以防止未保存的数据丢失。此功能通过记录每个输入元素的初始值并在用户导航离开时检查当前值来实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

$.fn.enable_changed_form_confirm = function () {    
    var _f = this;  
 $(':text, :password, textarea', this).each(function() {    
        $(this).attr('_value', $(this).val());    
    });  
  
    $(':checkbox, :radio', this).each(function() {    
        var _v = this.checked ? 'on' : 'off';    
        $(this).attr('_value', _v);    
    });  
  
    $('select', this).each(function() {    
        $(this).attr('_value', this.options[this.selectedIndex].value);    
    });    
        
    $(this).submit(function() {    
        window.onbeforeunload = null;    
    });    
  
    window.onbeforeunload = function() {    
        if(is_form_changed(_f)) {    
            return "You will lose any unsaved content.";    
        }    
    }    
}  
  
  
  
  
  
function is_form_changed(f) {    
    var changed = false;    
    $(':text, :password, textarea', f).each(function() {    
        var _v = $(this).attr('_value');    
        if(typeof(_v) == 'undefined')   _v = '';    
        if(_v != $(this).val()) changed = true;    
    });    
  
    $(':checkbox, :radio', f).each(function() {    
        var _v = this.checked ? 'on' : 'off';  
        if(_v != $(this).attr('_value')) changed = true;    
    });    
   
    $('select', f).each(function() {    
        var _v = $(this).attr('_value');    
        if(typeof(_v) == 'undefined')   _v = '';    
        if(_v != this.options[this.selectedIndex].value) changed = true;  
    });    
    return changed;    
}  
  
  
  
  
$(function() {    
    $('form').enable_changed_form_confirm();    
});  

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值