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 相关文章推荐
在浏览器窗口上添加遮罩层的方法
Nov 12 Javascript
extjs render 用法介绍
Sep 11 Javascript
Javascript核心读书有感之表达式和运算符
Feb 11 Javascript
jquery 根据name名获取元素的value值
Feb 27 Javascript
JavaScript实现算术平方根算法-代码超简单
Sep 11 Javascript
Bootstrap中表单控件状态(验证状态)
Aug 04 Javascript
JavaScript模块化之使用requireJS按需加载
Apr 12 Javascript
js canvas实现适用于移动端的百分比仪表盘dashboard
Jul 18 Javascript
详解VueRouter进阶之导航钩子和路由元信息
Sep 13 Javascript
VUE的history模式下除了index外其他路由404报错解决办法
Aug 21 Javascript
微信小程序实现限制用户转发功能的实例代码
Feb 22 Javascript
原生JS实现拖拽效果
Dec 04 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版快速排序、冒泡排序
2014/04/09 PHP
zend framework中使用memcache的方法
2016/03/04 PHP
PHP实现微信支付(jsapi支付)流程步骤详解
2018/03/15 PHP
用javascript获得地址栏参数的两种方法
2006/11/08 Javascript
JavaScript实现的石头剪刀布游戏源码分享
2014/08/22 Javascript
jQuery中ready事件用法实例
2015/01/19 Javascript
JavaScript中反正弦函数Math.asin()的使用简介
2015/06/14 Javascript
你所不了解的javascript操作DOM的细节知识点(一)
2015/06/17 Javascript
JS实现同一个网页布局滑动门和TAB选项卡实例
2015/09/23 Javascript
跟我学习javascript的call(),apply(),bind()与回调
2015/11/16 Javascript
浅析javascript函数表达式
2016/02/10 Javascript
Javascript日期格式化format函数的使用方法
2016/08/30 Javascript
vue-router配合ElementUI实现导航的实例
2018/02/11 Javascript
javascript实现电商放大镜效果
2020/11/23 Javascript
JavaScript中的几种继承方法示例
2020/12/06 Javascript
[09:37]DOTA2卡尔工作室 英雄介绍圣堂刺客篇
2013/06/13 DOTA
[27:02]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第三场
2014/05/24 DOTA
对pycharm代码整体左移和右移缩进快捷键的介绍
2018/07/16 Python
Python闭包思想与用法浅析
2018/12/27 Python
python读取有密码的zip压缩文件实例
2019/02/08 Python
Django如何简单快速实现PUT、DELETE方法
2019/07/24 Python
pytorch随机采样操作SubsetRandomSampler()
2020/07/07 Python
Python使用tkinter实现小时钟效果
2021/02/22 Python
瑰珀翠美国官网:Crabtree & Evelyn美国
2016/11/29 全球购物
美国在线自行车商店:Jenson USA
2018/05/22 全球购物
中国双语服务优势的在线购票及活动平台:247tickets
2018/10/26 全球购物
Antler英国官网:购买安特丽行李箱、拉杆箱
2019/08/25 全球购物
Timberland澳大利亚官网:全球领先的户外品牌
2019/12/10 全球购物
热爱祖国的演讲稿
2014/05/04 职场文书
二年级班级文化建设方案
2014/05/10 职场文书
董事长岗位职责
2015/02/13 职场文书
团员年度个人总结
2015/02/26 职场文书
2015年食堂工作总结报告
2015/04/23 职场文书
2015年老干部工作总结
2015/04/23 职场文书
教师专业技术工作总结2015
2015/05/13 职场文书
使用Python开发冰球小游戏
2022/04/30 Python