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 字符串乘法
Aug 20 Javascript
javascript innerHTML使用分析
Dec 03 Javascript
iframe 异步加载技术及性能分析
Jul 19 Javascript
Javascript 面向对象编程(一) 封装
Aug 28 Javascript
jQuery中$.each使用详解
Jan 29 Javascript
jquery实现华丽的可折角广告代码
Sep 02 Javascript
限制复选框最多选择项的实现代码
May 30 Javascript
jQuery实现的简单动态添加、删除表格功能示例
Sep 21 jQuery
Three.js实现绘制字体模型示例代码
Sep 26 Javascript
vue项目实现表单登录页保存账号和密码到cookie功能
Aug 31 Javascript
vue-cli3使用 DllPlugin 实现预编译提升构建速度
Apr 24 Javascript
js+css实现扇形导航效果
Aug 18 Javascript
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脚本的10个技巧(5)
2006/10/09 PHP
php HTML无刷新提交表单
2016/04/05 PHP
PHP使用反射机制实现查找类和方法的所在位置
2016/04/22 PHP
PHP7内核之Reference详解
2019/03/14 PHP
[原创]来自ImageSee官方 JavaScript图片浏览器
2008/01/16 Javascript
jquery tab插件制作实现代码
2010/06/22 Javascript
javascript SpiderMonkey中的函数序列化如何进行
2012/12/05 Javascript
jQuery中阻止冒泡事件的方法介绍
2014/04/12 Javascript
js控制网页前进和后退的方法
2015/06/08 Javascript
jQuery改变form表单的action,并进行提交的实现代码
2016/05/25 Javascript
JavaScript中日期函数的相关操作知识
2016/08/03 Javascript
js实现获取鼠标当前的位置
2016/12/14 Javascript
基于bootstrap的文件上传控件bootstrap fileinput
2016/12/23 Javascript
解决linux下node.js全局模块找不到的问题
2018/05/15 Javascript
详解Vue中使用Echarts的两种方式
2018/07/03 Javascript
vue中过滤器filter的讲解
2019/01/21 Javascript
JavaScript数据结构与算法之二叉树实现查找最小值、最大值、给定值算法示例
2019/03/01 Javascript
Node.js中文件系统fs模块的使用及常用接口
2020/03/06 Javascript
[01:04:35]2018DOTA2亚洲邀请赛 4.3 突围赛 Secret vs VG 第一场
2018/04/04 DOTA
Python利用正则表达式匹配并截取指定子串及去重的方法
2015/07/30 Python
Python使用crontab模块设置和清除定时任务操作详解
2019/04/09 Python
Python获取好友地区分布及好友性别分布情况代码详解
2019/07/10 Python
pytorch numpy list类型之间的相互转换实例
2019/08/18 Python
Python使用itchat模块实现简单的微信控制电脑功能示例
2019/08/26 Python
Python .py生成.pyd文件并打包.exe 的注意事项说明
2021/03/04 Python
西班牙美妆电商:Perfume’s Club(有中文站)
2018/08/08 全球购物
俄罗斯小米家用电器、电子产品和智能家居商店:Poood.ru
2020/04/03 全球购物
心得体会怎么写
2013/12/30 职场文书
九年级家长会邀请函
2014/01/15 职场文书
党员自我批评与反省材料
2014/02/10 职场文书
市场拓展计划书
2014/05/03 职场文书
消防安全月活动总结
2015/05/08 职场文书
给领导敬酒词
2015/08/12 职场文书
ORACLE数据库应用开发的三十个注意事项
2021/06/07 Oracle
SpringBoot 拦截器妙用你真的了解吗
2021/07/01 Java/Android
继承Win10缺点!教你关闭Win11烦人的网络搜索
2021/11/23 数码科技