最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

form表單序列化詳解(推薦)

 更新時間:2017年08月15日 11:02:47   作者:Cynthia_xie  
這篇文章主要介紹了form表單序列化操作,通過將表單中的鍵值序列化為可提交的字符串,并附上代碼實例詳細講解了運行之后的結果,需要的朋友可以參考下

form的序列化,即將表單中的鍵值序列化為可提交的字符串

表單

 <form id="target">
  <select name="age">
   <option value="age1">20</option>
   <option value="age2" selected>21</option>
  </select>
  <input name="name" value="Cynthia">
  <label>passsword</label>
  <input type="password" name="password" value="123456">
  <input type="hidden" name="salery" value="3333">
  <textarea name="description" cols="15" rows="5">description</textarea>
  <input type="checkbox" name="hobby" value="football" checked> Football
  <input type="checkbox" name="hobby" value="basketball"> Basketball
  <input type="radio" name="sex" value="Female" checked> Female
  <input type="radio" name="sex" value="Male"> Male
 </form>

方法一 

function serializeForm1(form){ 
   var setForm = ""; 
   for(var key in form){ 
    if(form.hasOwnProperty(key)){ 
     setForm += '"'+form[key].name+'"'+':'+'"'+form[key].value + '"'+',';
    }
   }
   setForm = "{" + setForm.slice(0,setForm.length -1) + "}";
   console.log(setForm);
   // console.log(JSON.parse(setForm));
   return JSON.parse(setForm);
  }
   
  // 調(diào)用
  var oForm = document.getElementById('target');
  console.log(serializeForm3(oForm));

結果:

方法二

 function serializeForm2(form) {
   var parts = [];
   for (var i = 0, i1 = form.elements.length; i < i1; i++) {
    var field = form.elements[i];
    switch (field.type) {
     case 'select-one':
     case 'select-multiple':
      if (field.type.length) {
       for (var j = 0, j1 = field.options.length; j < j1; j++) {
        var option = field.options[j];
        if (option.selected) {
         var optionValue = '';
         if (option.hasAttribute('value') && option.attributes['value'].specified) {
          //specified表明是否有此屬性,有的話返回true,若定義了此屬性但尚未添加到元素中也返回true。
          optionValue = option.value;
         } else {
          optionValue = optionValue.text;
         }
         parts.push(encodeURIComponent(field.name) + '=' + encodeURIComponent(optionValue));
        }
       }
      }
      break;
     case undefined:
     case 'file':
     case 'submit':
     case 'reset':
     case 'button':
      break;
     case 'radio':
     case 'checkbox':
      if(!field.checked){
       break;
      }else{
       parts.push(encodeURIComponent(field.name) + '=' + encodeURIComponent(field.dataset['index']));
       break;
      }
     default:
      if(field.name.length){
       parts.push(encodeURIComponent(field.name) + '=' + encodeURIComponent(field.value));
      }
    }
   }
   return parts.join('&');
  }
   
  // 調(diào)用
  var oForm = document.getElementById('target');
    console.log(serializeForm2(oForm));

結果:

方法三

 function serializeForm3(form){
   if(!form||form.tagName.toUpperCase()!='FORM'){
    return false;
   }
   var res=[];
   var tag,tagType,tagVal,tagName;
   for(var i=0;i<form.length;i++){
    tag=form[i];
    tagType=form[i].type;
    tagVal=form[i].value;
    tagName=form[i].name; 
    var reg1=/['textarea'|'text'|'passsword'|'label']/g;
    var reg2=/['radio'|'checkbox']/g;
    var reg3=/['select']/g;
    if(reg1.test(tagType)){
     res.push(encodeURIComponent(tagName)+"="+encodeURIComponent(tagVal));
    }else if(reg2.test(tagType)&&tag.checked){
     res.push(encodeURIComponent(tagName)+"="+encodeURIComponent(tagVal)); 
    }else if(reg3.test(tagType)){
     for(var j=0;j<tag.options.length;j++){
      if(tag.options[j].selected){
      res.push(encodeURIComponent(tagVal)+"="+encodeURIComponent(tag.options[j].value||tag.options[j].text)); 
      }
     }
    }else{}
   } 
   return res.join(" & ");
  }
   
  // 調(diào)用
  var oForm = document.getElementById('target');
  console.log(serializeForm3(oForm));

結果:

以上就是本文的全部內(nèi)容啦,希望對大家有所幫助~

相關文章

  • JavaScript之引用類型介紹

    JavaScript之引用類型介紹

    引用類型通常叫作類(class),也就是說,遇到引用值時,所處理的就是對象。
    2012-08-08
  • JavaScript 學習筆記二 字符串拼接

    JavaScript 學習筆記二 字符串拼接

    JavaScript 字符串拼接的一些知識點分析,對于提高效率等,都是非常值得一看的。
    2010-03-03
  • JavaScript中constructor()方法的使用簡介

    JavaScript中constructor()方法的使用簡介

    這篇文章主要介紹了JavaScript中constructor()方法的使用簡介,是JS入門學習中的基礎知識,需要的朋友可以參考下
    2015-06-06
  • 結合代碼圖文講解JavaScript中的作用域與作用域鏈

    結合代碼圖文講解JavaScript中的作用域與作用域鏈

    JavaScript雖然沒有類,但變量和一些函數(shù)卻同樣擁有局部作用域的制約,下面結合代碼圖文講解JavaScript中的作用域與作用域鏈:
    2016-07-07
  • 整理JavaScript對DOM中各種類型的元素的常用操作

    整理JavaScript對DOM中各種類型的元素的常用操作

    這篇文章主要介紹了JavaScript對DOM中各種類型的元素的常用操作整理,DOM操作是JavaScript程序的一大根本任務,需要的朋友可以參考下
    2016-05-05
  • 全面理解JavaScript中的閉包

    全面理解JavaScript中的閉包

    將外部作用域中的局部變量封閉起來的函數(shù)對象稱為閉包(Closure),被封閉起來的變量與封閉它的函數(shù)對象有相同的生命周期,這在JavaScript中比較難理解而且十分重要,接下來帶大家一起來全面理解JavaScript中的閉包:
    2016-05-05
  • Javascript學習筆記二 之 變量

    Javascript學習筆記二 之 變量

    上面描述了數(shù)據(jù)類型,學習完數(shù)據(jù)類型就不得不提到變量。
    2010-12-12
  • JavaScript中的lastIndexOf()方法使用詳解

    JavaScript中的lastIndexOf()方法使用詳解

    這篇文章主要介紹了JavaScript中的lastIndexOf()方法使用詳解,是JS入門學習中的基礎知識,需要的朋友可以參考下
    2015-06-06
  • Javascript 基礎---Ajax入門必看

    Javascript 基礎---Ajax入門必看

    下面小編就為大家?guī)硪黄狫avascript 基礎---Ajax入門必看。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-07-07
  • actionscript與javascript的區(qū)別

    actionscript與javascript的區(qū)別

    actionscript是flash的腳本語言,目前已經(jīng)由adobe公司升級到3.0版本,成為了真正意義的oop語言,JavaScript是由netscape工程師設計完成的一門腳本語言,用于web開發(fā)的前端腳本
    2011-05-05

最新評論

紫金县| 息烽县| 秦皇岛市| 宁德市| 龙井市| 蒲城县| 卢龙县| 安平县| 龙胜| 元氏县| 内丘县| 海兴县| 密云县| 文安县| 乌兰县| 永平县| 岳阳县| 普陀区| 桐乡市| 睢宁县| 达州市| 柘荣县| 山丹县| 马尔康县| 盐边县| 乐清市| 景谷| 山阳县| 梁山县| 治多县| 漳平市| 永福县| 刚察县| 鞍山市| 桑植县| 新绛县| 宁海县| 余干县| 砚山县| 四子王旗| 建宁县|