JavaScript判断用户是否对表单进行了修改的方法

 更新时间:2015年03月18日 12:16:51   作者:上大王  
这篇文章主要介绍了JavaScript判断用户是否对表单进行了修改的方法,实例分析了javascript对表单操作与判定的技巧,需要的朋友可以参考下

本文实例讲述了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程序设计有所帮助。

相关文章

  • 前端防止用户重复提交js实现代码示例

    前端防止用户重复提交js实现代码示例

    这篇文章主要给大家介绍了关于前端防止用户重复提交js实现的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起看看吧
    2018-09-09
  • js中的cookie的读写操作示例详解

    js中的cookie的读写操作示例详解

    cookie是有有效期的,cookie的默认有效期是从cookie生成至浏览器关闭,也可以通过设置cookie的有效期来指定其失效日期;用户也可以禁止cookie也可以手动删除cookie
    2014-04-04
  • 前端面向对象编程之ES5语法ES6语法详解

    前端面向对象编程之ES5语法ES6语法详解

    这篇文章主要为大家介绍了前端面向对象编程之ES5语法ES6语法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • JavaScript 放大镜 放大倍率和视窗尺寸

    JavaScript 放大镜 放大倍率和视窗尺寸

    对JavaScript 放大镜来说, 计算倍率必不可少.一个完整的放大镜结构里, 与倍率扯上关系的一共有 4 个对象, 原图, 缩略图, 镜片和视窗.
    2011-05-05
  • BootstrapVue选项卡标题增加关闭按钮的方法

    BootstrapVue选项卡标题增加关闭按钮的方法

    这篇文章主要为大家详细介绍了BootstrapVue选项卡标题增加关闭按钮的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • js 3种归并操作的实例代码

    js 3种归并操作的实例代码

    这篇文章介绍了js 3种归并操作的实例代码,有需要的朋友可以参考一下
    2013-10-10
  • 使用时间戳解决ie缓存的问题

    使用时间戳解决ie缓存的问题

    当编辑某条数据时,再回过头来进行编辑,会发现,里面的数据和没有编辑以前是一样的,这就是ie缓存的问题,下面是一个不错的解决方法
    2014-08-08
  • JS获取年月日时分秒的方法分析

    JS获取年月日时分秒的方法分析

    这篇文章主要介绍了JS获取年月日时分秒的方法,结合实例形式分析了JS获取具体时间的常犯错误与相应解决方法,需要的朋友可以参考下
    2016-11-11
  • JS实现关闭当前页而不弹出提示框的方法

    JS实现关闭当前页而不弹出提示框的方法

    这篇文章主要介绍了JS实现关闭当前页而不弹出提示框的方法,结合实例形式分析了JS操作页面的打开、关闭及父页面的关闭技巧,需要的朋友可以参考下
    2016-06-06
  • 两种简单实现菜单高亮显示的JS类代码

    两种简单实现菜单高亮显示的JS类代码

    近期在写一个博客管理后台的前端,涉及在同一页面两种高亮显示当前菜单的需求.
    2010-06-06

最新评论