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间隔定时器(延时定时器)学习 间隔调用和延时调用
Jan 13 Javascript
使用AngularJS制作一个简单的RSS阅读器的教程
Jun 18 Javascript
jquery表单验证插件formValidator使用方法
Apr 01 Javascript
关于JavaScript数组你所不知道的3件事
Aug 24 Javascript
jQuery实现倒计时重新发送短信验证码功能示例
Jan 12 Javascript
jQuery中on方法使用注意事项详解
Feb 15 Javascript
基于Vue过渡状态实例讲解
Sep 14 Javascript
vue.js select下拉框绑定和取值方法
Mar 03 Javascript
在iFrame子页面里实现模态框的方法
Aug 17 Javascript
js获取浏览器地址(获取第1个斜杠后的内容)
Sep 03 Javascript
React路由鉴权的实现方法
Sep 05 Javascript
angular8和ngrx8结合使用的步骤介绍
Dec 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
PHP学习之PHP运算符
2006/10/09 PHP
PHP表单提交表单名称含有点号(.)则会被转化为下划线(_)
2011/12/14 PHP
解析coreseek for sphinx的使用
2013/06/21 PHP
为PHP安装imagick时出现Cannot locate header file MagickWand.h错误的解决方法
2014/11/03 PHP
PHP计算数组中值的和与乘积的方法(array_sum与array_product函数)
2016/04/01 PHP
PHP使用pear实现mail发送功能 windows环境下配置pear
2016/04/15 PHP
LBS blog sql注射漏洞[All version]-官方已有补丁
2007/08/26 Javascript
javascript跨浏览器的属性判断方法
2014/03/16 Javascript
浅析javascript 定时器
2014/12/23 Javascript
JavaScript实现判断图片是否加载完成的3种方法整理
2015/03/13 Javascript
js数组去重的方法汇总
2015/07/29 Javascript
javascript实现输出指定行数正方形图案的方法
2015/08/03 Javascript
jQuery过滤特殊字符及JS字符串转为数字
2016/05/26 Javascript
详解win7 cmd执行vue不是内部命令的解决方法
2017/07/27 Javascript
vue watch监听对象及对应值的变化详解
2018/02/24 Javascript
vue 中滚动条始终定位在底部的方法
2018/09/03 Javascript
微信小程序实现简单评论功能
2018/11/28 Javascript
vue基于viewer实现的图片查看器功能
2019/04/12 Javascript
javascript中的offsetWidth、clientWidth、innerWidth及相关属性方法
2020/05/14 Javascript
JS实现炫酷轮播图
2020/11/15 Javascript
详解vue中在父组件点击按钮触发子组件的事件
2020/11/13 Javascript
详解阿里Node.js技术文档之process模块学习指南
2021/01/04 Javascript
[42:32]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第二场 11.27
2020/12/01 DOTA
详解利用Python scipy.signal.filtfilt() 实现信号滤波
2019/06/05 Python
Django rest framework分页接口实现原理解析
2020/08/21 Python
HTML5 解析规则分析
2009/08/14 HTML / CSS
Urban Outfitters美国官网:美国生活方式品牌
2016/08/26 全球购物
如何启动时不需输入用户名与密码
2014/05/09 面试题
《孙权劝学》教学反思
2014/04/23 职场文书
创先争优标语
2014/06/27 职场文书
社区服务标语
2014/07/01 职场文书
2015年度个人思想工作总结
2015/04/08 职场文书
2015年幼儿园后勤工作总结
2015/04/25 职场文书
幼儿园小班开学寄语
2015/05/27 职场文书
公司员工离职感言
2015/08/03 职场文书
Django 实现jwt认证的示例
2021/04/30 Python