defaultValue浅解

1.defaultValue为JavaScript DOM对象,不能直接在Jquery对象中使用,必须先转化为DOM对象;
2.defaultValue对于input type="text/hidden" 为标签上的value值,并非原始值,如果通过JS修改了value值,则对象的defaultValue也会改变;
案例分析:想实现修改表单,提交的时候只需提交修改的字段
function submitForm(){
    var elements = document.getElementById("commentForm");
    var len = elements.length;
    var updateBool = false;
    var jsonObj = {};
    for(var i=0;i<len;i++){
        var field = elements[i];
        if((field.type=="text" || field.type=="textarea" || field.type=="file" || field.type=="hidden" || field.type=="select-one") ){
            
            if(field.name=="id"){
                jsonObj = {};
                jsonObj[field.name] = field.value;
            }else if(field.name!=""&&isdirty(field)){
                jsonObj[field.name] = field.value;
                updateBool = true;
            }
        }
    }
    //如果数组数据为空,则不提交数据
    if(!updateBool){
        layer.msg('暂无修改数据', function(){
            //关闭后的操作
        });
        return false;
    }

    //ajax保存数据
    $.ajax({
        type:"post",
        url:"",
        dataType:"json",
        contentType:"application/json;charset=utf-8",
        data:JSON.stringify(jsonObj),  //这个方法是将json的字符串形式转换成json对象,后台接收到的时候是一个整体的对象,而不是字符串。
        beforeSend:function(){
            layer.load(2);
        },
        success: function(data) { 
        },
        error:function(e){
           
        }
    });
}

function isdirty(control){
   return (getControlValue(control) != getControlDefaultValue(control));
}

function getControlValue(control){
   if(control.type == 'checkbox'){
      return control.checked;
   } else if(control.type == 'radio'){
      return control.checked;
   } else if(control.type == 'select-one'){
      for(var i=0; i<control.options.length; i++){
         if(control.options[i].selected)
            return control.options[i].value;
      }
      return null;
   } else
      return control.value;
}

function getControlDefaultValue(control){
   if(control.type == 'checkbox'){
      return control.defaultChecked;
   } else if(control.type == 'radio'){
      return control.defaultChecked;
   } else if(control.type == 'select-multiple'){
      return null;
   } else if(control.type == 'select-one'){
      for(var i=0; i<control.options.length; i++){
         if (control.options[i].defaultSelected)
            return control.options[i].value;
      }
      if(control.options.length > 0) return control.options[0].value;
      return null;
   } else
      return control.defaultValue;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值