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 相关文章推荐
jQuery 树形结构的选择器
Feb 15 Javascript
编写自己的jQuery插件简单实现代码
Apr 19 Javascript
js去除重复字符串两种实现方法
Jan 09 Javascript
浅析showModalDialog数据缓存问题(用禁止浏览器缓存解决)
Jul 09 Javascript
js获取指定的cookie的具体实现
Feb 20 Javascript
jquery 无限级下拉菜单的简单实现代码
Feb 21 Javascript
javascript记录文本框内文字个数检测文字个数变化
Oct 14 Javascript
node.js中的fs.readdir方法使用说明
Dec 17 Javascript
浅谈JavaScript Math和Number对象
Jan 26 Javascript
JS特效实现图片自动播放并可控的效果
Jul 31 Javascript
jQuery 操作 HTML 元素和属性的方法
Nov 12 jQuery
Vue中关闭弹窗组件时销毁并隐藏操作
Sep 01 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
PHP5.5在windows安装使用memcached服务端的方法
2014/04/16 PHP
PHP中几个可以提高运行效率的代码写法、技巧分享
2014/08/21 PHP
推荐一款MAC OS X 下php集成开发环境mamp
2014/11/08 PHP
Yii框架获取当前controlle和action对应id的方法
2014/12/03 PHP
Symfony2框架学习笔记之表单用法详解
2016/03/18 PHP
php中10个不同等级压缩优化图片操作示例
2016/11/14 PHP
php服务器的系统详解
2019/10/12 PHP
DOM相关内容速查手册
2007/02/07 Javascript
js之ActiveX控件使用说明 new ActiveXObject()
2014/03/03 Javascript
Easyui Treegrid改变默认图标的方法
2016/04/29 Javascript
JS实现的跨浏览器解析XML文件实例
2016/06/21 Javascript
jQuery dataTables与jQuery UI 对话框dialog的使用教程
2016/09/02 Javascript
微信小程序 开发经验整理
2017/02/15 Javascript
Angular2使用Angular CLI快速搭建工程(一)
2017/05/21 Javascript
用最简单的方法判断JavaScript中this的指向(推荐)
2017/09/04 Javascript
如何理解Vue的v-model指令的使用方法
2018/07/19 Javascript
VUE 组件转换为微信小程序组件的方法
2019/11/06 Javascript
python进阶教程之函数参数的多种传递方法
2014/08/30 Python
Python使用numpy实现BP神经网络
2018/03/10 Python
python 每天如何定时启动爬虫任务(实现方法分享)
2018/05/21 Python
Django中的AutoField字段使用
2020/05/18 Python
针对HTML5的Web Worker使用攻略
2015/07/12 HTML / CSS
Hotels.com南非:酒店预订
2017/11/02 全球购物
Farfetch美国:奢侈品牌时尚购物平台
2019/05/02 全球购物
大型活动组织方案
2014/05/10 职场文书
公司市场专员岗位职责
2014/06/29 职场文书
社区清明节活动总结
2014/07/04 职场文书
学校班子个人对照检查材料思想汇报
2014/09/27 职场文书
党员个人总结自评
2015/02/14 职场文书
消防演习通知
2015/04/25 职场文书
2015初中教导处工作总结
2015/07/21 职场文书
团干部培训班心得体会
2016/01/06 职场文书
餐饮行业关注的9大营销策略
2019/08/26 职场文书
nginx刷新页面出现404解决方案(亲测有效)
2022/03/18 Servers
Mysql调整优化之四种分区方式以及组合分区
2022/04/13 MySQL
MyBatis核心源码深度剖析SQL语句执行过程
2022/05/20 Java/Android