js检测离开或刷新页面时表单数据是否更改的方法


Posted in Javascript onAugust 02, 2016

本文实例讲述了js检测离开或刷新页面时表单数据是否更改的方法。分享给大家供大家参考,具体如下:

function formIsDirty(form) {
  for (var i = 0; i < form.elements.length; i++) {
    var element = form.elements[i];
    var type = element.type;
    if (type == "checkbox" || type == "radio") {
      if (element.checked != element.defaultChecked) {
        return true;
      }
    }
    else if (type == "hidden" || type == "password" || type == "text" || type == "textarea") {
      if (element.value != element.defaultValue) {
        return true;
      }
    }
    else if (type == "select-one" || type == "select-multiple") {
      for (var j = 0; j < element.options.length; j++) {
        if (element.options[j].selected != element.options[j].defaultSelected) {
          return true;
        }
      }
    }
  }
  return false;
}
window.onbeforeunload = function (e) {
  e = e || window.event;
  if (formIsDirty(document.forms["someForm"])) {
    // IE 和 Firefox
    if (e) {
      e.returnValue = "对不起,页面数据已做修改,尚未保存,确定要刷新或离开本页面?";
    }
    // Safari浏览器
    return "对不起,页面数据已做修改,尚未保存,确定要刷新或离开本页面?";
  }
};

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
js 变量类型转换常用函数与代码[比较全]
Dec 01 Javascript
javascript KeyDown、KeyPress和KeyUp事件的区别与联系
Dec 03 Javascript
javascript sudoku 数独智力游戏生成代码
Mar 27 Javascript
js获取html参数及向swf传递参数应用介绍
Feb 18 Javascript
父节点获取子节点的字符串示例代码
Feb 26 Javascript
实例说明为什么不要行内使用javascript
Apr 18 Javascript
在JS数组特定索引处指定位置插入元素的技巧
Aug 24 Javascript
原生js模拟淘宝购物车项目实战
Nov 18 Javascript
基于vue cli重构多页面脚手架过程详解
Jan 23 Javascript
基于Echarts图表在div动态切换时不显示的解决方式
Jul 20 Javascript
js实现日历
Nov 07 Javascript
JavaScript实现移动小精灵的案例代码
Dec 12 Javascript
AngularJS基础 ng-options 指令详解
Aug 02 #Javascript
深入理解JavaScript中Ajax
Aug 02 #Javascript
AngularJS基础 ng-open 指令简单实例
Aug 02 #Javascript
AngularJS基础 ng-non-bindable 指令详细介绍
Aug 02 #Javascript
实例详解jQuery的无new构建
Aug 02 #Javascript
AngularJS基础 ng-mouseover 指令简单示例
Aug 02 #Javascript
JavaScript比较当前时间是否在指定时间段内的方法
Aug 02 #Javascript
You might like
php 获取mysql数据库信息代码
2009/03/12 PHP
php过滤敏感词的示例
2014/03/31 PHP
Symfony2 session用法实例分析
2016/02/04 PHP
PHP大文件分割上传 PHP分片上传
2017/08/28 PHP
PHP实现将几张照片拼接到一起的合成图片功能【便于整体打印输出】
2017/11/14 PHP
jQuery Ajax 仿AjaxPro.Utility.RegisterTypeForAjax辅助方法
2011/09/27 Javascript
JS小功能(onmouseover实现选择月份)实例代码
2013/11/28 Javascript
jquery插件之定时查询待处理任务数量
2014/05/01 Javascript
JavaScript中使用Math.PI圆周率属性的方法
2015/06/14 Javascript
jQuery增加与删除table列的方法
2016/03/01 Javascript
jQuery ajax请求返回list数据动态生成input标签,并把list数据赋值到input标签
2016/03/29 Javascript
动态加载js、css的简单实现代码
2016/05/26 Javascript
angular4模块中给标签添加背景图的实现方法
2017/09/15 Javascript
Nodejs使用Mongodb存储与提供后端CRD服务详解
2018/09/04 NodeJs
简述vue路由打开一个新的窗口的方法
2018/11/29 Javascript
JS Array.from()将伪数组转换成数组的方法示例
2020/03/23 Javascript
vue实现树状表格效果
2020/12/29 Vue.js
Google开源的Python格式化工具YAPF的安装和使用教程
2016/05/31 Python
python的Crypto模块实现AES加密实例代码
2018/01/22 Python
python将txt文档每行内容循环插入数据库的方法
2018/12/28 Python
对pandas处理json数据的方法详解
2019/02/08 Python
Python人脸识别第三方库face_recognition接口说明文档
2019/05/03 Python
python面试题之列表声明实例分析
2019/07/08 Python
Python 实现RSA加解密文本文件
2020/12/30 Python
struct和class的区别
2015/11/20 面试题
数控专业毕业生求职信范文
2013/09/21 职场文书
关爱女孩行动实施方案
2014/03/13 职场文书
教师产假请假条范文
2014/04/10 职场文书
推广普通话演讲稿
2014/05/23 职场文书
工作疏忽、懈怠的检讨书
2014/09/11 职场文书
未中标通知书
2015/04/17 职场文书
工程服务质量承诺书
2015/04/29 职场文书
Nginx 根据URL带的参数转发的实现
2021/04/01 Servers
mysql在项目中怎么选事务隔离级别
2021/05/25 MySQL
python异常中else的实例用法
2021/06/15 Python
什么是SOLID
2022/03/24 Javascript