JQ判断from表单是否修改两种方式

第一种为HTML表单元素添加onchange事件处理器是一种可行的方法,这也是用的最多的,但是onchange的实现有一些问题存在:

1.如果用户改变表单域的值,然后再修改回原始值,程序仍将认为表单的修改已经发生。
2.如果表单项的值是通过Javascript动态修改的,onchange事件不会被自动触发。
3.为每一个表单元素增加onchange事件会引起性能问题,特别是较大的表单。
4.如果将表单元素从DOM中增加或移除,你需要相应的注册或移除事件侦听。
5.checkbox和radio的onchange事件在某些浏览器下不能按预期工作(你应该知道是哪个浏览器)。
6.除了onchange,还有更简单有效的方案。

  <script type="text/javascript" src="jquery.js"></script>
<script>    
 $(function() {
   $("#myform :input").change(function(){
   $("#myform").data("changed",true);  
  });  
});  
function mysubmit(){
  alert($("#myform").data("changed"));
  if($("#myform").data("changed")){
     alert("输入框修改过!")
  }else{
    alert("没有修改过,继续!");
  }
}
</script>


 </HEAD>
 <BODY>
 <form id="myform">
 <input type="text" name="aa"/>
 <input type="text" name="bb"/>
 <select><option>aaa</option><option>bbb</option></select>
<input type="button" value="提交" οnclick="mysubmit()"/>
 </form>

第二种就是直接比较form表单加载前和提交时的数据

1.在表单加载(初始化)就把表单序列化成json格式数据

2.点击提交按钮在把表单序列化成json格式数据然后进行比较

$(function(){
      var dataformInit = $("#form1").serializeArray();  
      var jsonTextInit = JSON.stringify({ dataform: dataformInit });
      $("#bt_submit").click(function(){
             var dataform = $("#form1").serializeArray(); 
             var jsonText = JSON.stringify({ dataform: dataform }); 
             if(jsonTextInit==jsonText)  { 
                     alert("表单值没有改变!");
                      return false;
             }else{ 
                       alert("表单值改变了!"); 
                        return false;
              }
      })
})
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值