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 相关文章推荐
JSON 编辑器实现代码
Dec 06 Javascript
JavaScript栏目列表隐藏/显示简单实现
Apr 03 Javascript
javascript中hasOwnProperty() 方法使用指南
Mar 09 Javascript
jquery弹出遮掩层效果【附实例代码】
Apr 28 Javascript
jQuery插件AjaxFileUpload实现ajax文件上传
May 05 Javascript
使用js获取地址栏参数的方法推荐(超级简单)
Jun 14 Javascript
WEB 前端开发中防治重复提交的实现方法
Oct 26 Javascript
H5实现中奖记录逐行滚动切换效果
Mar 13 Javascript
JavaScript面向对象精要(下部)
Sep 12 Javascript
解决JSON.stringify()自动将中文转译成unicode的问题
Jan 05 Javascript
js实现直播点击飘心效果
Aug 19 Javascript
NestJs使用Mongoose对MongoDB操作的方法
Feb 22 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制作unicode解码工具(unicode编码转换器)代码分享
2013/12/24 PHP
session 加入redis的实现代码
2016/07/15 PHP
thinkphp查询,3.X 5.0方法(亲试可行)
2017/06/17 PHP
php批量转换文件夹下所有文件编码的函数类
2017/08/06 PHP
PHP中一个有趣的preg_replace函数详解
2018/08/15 PHP
Javascript 数组排序详解
2014/10/22 Javascript
jQuery+ajax中getJSON() 用法实例
2014/12/22 Javascript
jQuery Easyui Tabs扩展根据自定义属性打开页签
2016/08/15 Javascript
jQuery.cookie.js使用方法及相关参数解释
2017/03/06 Javascript
Ionic学习日记实现验证码倒计时
2018/02/08 Javascript
axios取消请求的实践记录分享
2018/09/26 Javascript
vue 实现Web端的定位功能 获取经纬度
2019/08/08 Javascript
es6数组的flat(),flatMap()函数用法实例分析
2020/04/18 Javascript
一篇文章带你使用Typescript封装一个Vue组件(简单易懂)
2020/06/05 Javascript
JavaScript实现H5接金币功能(实例代码)
2021/02/22 Javascript
python实现文件名批量替换和内容替换
2014/03/20 Python
python 中if else 语句的作用及示例代码
2018/03/05 Python
Python装饰器原理与用法分析
2018/04/30 Python
在cmd中运行.py文件: python的操作步骤
2018/05/12 Python
Python数据分析:手把手教你用Pandas生成可视化图表的教程
2018/12/15 Python
Python Flask框架扩展操作示例
2019/05/03 Python
浅析Python 责任链设计模式
2020/09/11 Python
canvas学习总结三之绘制路径-线段
2019/01/31 HTML / CSS
雅诗兰黛旗下走天然植物路线的彩妆品牌:Prescriptives
2016/08/14 全球购物
英国标准协会商店:BSI Shop
2019/02/25 全球购物
请说出以下代码输出什么
2013/08/30 面试题
应届生程序员求职信
2013/11/05 职场文书
协议书格式
2014/04/23 职场文书
预备党员学习十八届三中全会精神思想汇报
2014/09/13 职场文书
大学生个人总结范文
2015/02/15 职场文书
钱学森电影观后感
2015/06/04 职场文书
2016秋季运动会前导词
2015/11/25 职场文书
2016大学优秀学生干部事迹材料
2016/03/01 职场文书
经典人生语录分享:不畏将来,不念过去,笑对当下
2019/12/12 职场文书
Java数据结构之链表相关知识总结
2021/06/18 Java/Android
Python之基础函数案例详解
2021/08/30 Python