JavaScript判断用户是否对表单进行了修改的方法


Posted in Javascript onMarch 18, 2015

本文实例讲述了JavaScript判断用户是否对表单进行了修改的方法。分享给大家供大家参考。具体分析如下:

这段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"])) {
  // For IE and Firefox
  if (e) {
   e.returnValue = "You have unsaved changes.";
  }
  // For Safari
  return "You have unsaved changes.";
 }
};

下面是一个完整的范例代码

Click on below button. Now change some values in form and click the button again.

<form name="fooForm">

    <input type="text" name="t"><br>

    <input type="text" name="2" value="default"><br>

    <select name="some">

        <option value="fooo" selected="">foo</option>

        <option value="bar">bar</option>

    </select><br>

</form>

    <button onclick="alert(formIsDirty(document.fooForm))">Click to check if Form is Dirty</button>

<br>

<script>

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;

}

</script>

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

Javascript 相关文章推荐
JAVASCRIPT下判断IE与FF的比较简单的方式
Oct 17 Javascript
实现点击列表弹出列表索引的两种方式
Mar 08 Javascript
textarea 控制输入字符字节数(示例代码)
Dec 27 Javascript
Javascript中this关键字的一些小知识
Mar 15 Javascript
jQuery+canvas实现简单的球体斜抛及颜色动态变换效果
Jan 28 Javascript
BootStrap 可编辑表Table格
Nov 24 Javascript
JS实现太极旋转思路分析
Dec 09 Javascript
微信小程序使用swiper组件实现类3D轮播图
Aug 29 Javascript
微信小程序中如何计算距离某个节日还有多少天
Jul 15 Javascript
vue 路由子组件created和mounted不起作用的解决方法
Nov 05 Javascript
js抽奖转盘实现方法分析
May 16 Javascript
vue+elementui 实现新增和修改共用一个弹框的完整代码
Jun 08 Vue.js
JavaScript阻止浏览器返回按钮的方法
Mar 18 #Javascript
JavaScript列表框listbox全选和反选的实现方法
Mar 18 #Javascript
JavaScript控制listbox列表框的项目上下移动的方法
Mar 18 #Javascript
JavaScript控制两个列表框listbox左右交换数据的方法
Mar 18 #Javascript
jQuery实现根据类型自动显示和隐藏表单
Mar 18 #Javascript
jQuery实现列表的全选功能
Mar 18 #Javascript
JavaScript判断一个字符串是否包含指定子字符串的方法
Mar 18 #Javascript
You might like
php+mysqli事务控制实现银行转账实例
2015/01/29 PHP
thinkPHP框架对接支付宝即时到账接口回调操作示例
2016/11/14 PHP
TNC vs BOOM BO3 第二场2.13
2021/03/10 DOTA
javascript实现图片切换的幻灯片效果源代码
2012/12/12 Javascript
JS操作数据库的实例代码
2013/10/17 Javascript
前端开发过程中浏览器版本的两种判定方法
2013/10/30 Javascript
关于编写性能高效的javascript事件的技术
2014/11/28 Javascript
谈谈Jquery ajax中success和complete有哪些不同点
2015/11/20 Javascript
javascript断点调试心得分享
2016/04/23 Javascript
详解基于Vue-cli搭建的项目如何和后台交互
2018/06/29 Javascript
ES10 特性的完整指南小结
2019/03/04 Javascript
JQuery获取可视区尺寸和文档尺寸及制作悬浮菜单示例
2019/05/14 jQuery
基于jQuery实现可编辑的表格
2019/12/11 jQuery
vue+element_ui上传文件,并传递额外参数操作
2020/12/05 Vue.js
闭包在python中的应用之translate和maketrans用法详解
2014/08/27 Python
Flask框架中密码的加盐哈希加密和验证功能的用法详解
2016/06/07 Python
Python+Selenium自动化实现分页(pagination)处理
2017/03/31 Python
Python如何通过subprocess调用adb命令详解
2017/08/27 Python
python+selenium实现登录账户后自动点击的示例
2017/12/22 Python
python中实现字符串翻转的方法
2018/07/11 Python
如何在Cloud Studio上执行Python代码?
2019/08/09 Python
Django自定义模板过滤器和标签的实现方法
2019/08/21 Python
Numpy数组的广播机制的实现
2020/11/03 Python
python爬虫中采集中遇到的问题整理
2020/11/27 Python
详解HTML5中的Communication API基本使用方法
2016/01/29 HTML / CSS
TripAdvisor越南:全球领先的旅游网站
2017/09/21 全球购物
JNI的定义
2012/11/25 面试题
新农村建设典型材料
2014/05/31 职场文书
云冈石窟导游词
2015/02/04 职场文书
2015年小学开学寄语
2015/02/27 职场文书
心术观后感
2015/06/11 职场文书
幼儿园家长心得体会
2016/01/21 职场文书
2019年度政务公开考核工作总结模板
2019/11/11 职场文书
goland 清除所有的默认设置操作
2021/04/28 Golang
浅谈Python 中的复数问题
2021/05/19 Python
Go语言并发编程 sync.Once
2021/10/16 Golang