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 模拟雅虎首页的点击对话框效果
Apr 11 Javascript
javascript检测页面是否缩放的小例子
May 16 Javascript
jquery放大镜效果超漂亮噢
Nov 15 Javascript
jQuery性能优化的38个建议
Mar 04 Javascript
jQuery实现长按按钮触发事件的方法
Feb 02 Javascript
javascript获取重复次数最多的字符
Jul 08 Javascript
JS实现AES加密并与PHP互通的方法分析
Apr 19 Javascript
es6+angular1.X+webpack 实现按路由功能打包项目的示例
Aug 16 Javascript
浅析JS抽象工厂模式
Dec 14 Javascript
vue 2.x 中axios 封装的get 和post方法
Feb 28 Javascript
详解async/await 异步应用的常用场景
May 13 Javascript
JavaScript 绘制饼图的示例
Feb 19 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 email邮箱正则
2008/10/08 PHP
php提交表单时判断 if($_POST[submit])与 if(isset($_POST[submit])) 的区别
2011/02/08 PHP
10个对初学者非常有用的PHP技巧
2016/04/06 PHP
PHP编程实现微信企业向用户付款的方法示例
2017/07/26 PHP
PHP使用POP3读取邮箱接收邮件的示例代码
2020/07/08 PHP
使用jQuery简化Ajax开发 Ajax开发入门
2009/10/14 Javascript
js 取时间差去掉周六周日实现代码
2012/12/25 Javascript
可恶的ie8提示缺少id未定义
2014/03/20 Javascript
jQuery异步验证用户名是否存在示例代码
2014/05/21 Javascript
jQuery实现统计复选框选中数量
2014/11/24 Javascript
JS+CSS实现仿触屏手机拨号盘界面及功能模拟完整实例
2015/05/16 Javascript
CSS3实现动态背景登录框的代码
2015/07/28 Javascript
AngularJs基本特性解析(一)
2016/07/21 Javascript
vue-cli如何快速构建vue项目
2017/04/26 Javascript
promise和co搭配生成器函数方式解决js代码异步流程的比较
2018/05/25 Javascript
iView-admin 动态路由问题的解决方法
2018/10/03 Javascript
js 实现在2d平面上画8的方法
2018/10/10 Javascript
利用JS判断元素是否为数组的方法示例
2021/01/08 Javascript
使用python实现拉钩网上的FizzBuzzWhizz问题示例
2014/05/05 Python
python实现简单的TCP代理服务器
2014/10/08 Python
Python实现简单的语音识别系统
2017/12/13 Python
通过 Django Pagination 实现简单分页功能
2019/11/11 Python
python进度条显示之tqmd模块
2020/08/22 Python
详解python爬取弹幕与数据分析
2020/11/14 Python
世界著名的顶级牛排:Omaha Steak(奥马哈牛排)
2016/09/20 全球购物
ziaja齐叶雅官方海外旗舰店:来自波兰的天然护肤品牌
2017/01/02 全球购物
联想台湾官网:Lenovo TW
2018/05/09 全球购物
法国女性内衣购物网站:Glamuse
2019/05/13 全球购物
你对IPv6了解程度
2016/02/09 面试题
应届生幼儿园求职信
2013/11/12 职场文书
小学教师办公室制度
2014/02/03 职场文书
三八妇女节趣味活动方案
2014/08/23 职场文书
干部作风建设年活动剖析材料
2014/10/23 职场文书
2014年企业党建工作总结
2014/12/18 职场文书
idea 在springboot中使用lombok插件的方法
2021/08/02 Java/Android
springboot+WebMagic+MyBatis爬虫框架的使用
2021/08/07 Java/Android