欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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));

結(jié)果:

方法二

 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));

結(jié)果:

方法三

 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));

結(jié)果:

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

相關(guān)文章

  • Js中sort()方法的用法

    Js中sort()方法的用法

    Js中sort()方法的用法,需要的朋友可以參考下。
    2006-11-11
  • javascript replace()第二個參數(shù)為函數(shù)時的參數(shù)用法

    javascript replace()第二個參數(shù)為函數(shù)時的參數(shù)用法

    replace()函數(shù)具有替換功能,它可以具有兩個參數(shù),第一個參數(shù)可以是要被替換的字符串或者匹配要被替換字符串的正則表達(dá)式,第二個參數(shù)可以是替換文本或者一個函數(shù),下面看一下關(guān)于replace()函數(shù)的幾個代碼實(shí)例
    2016-12-12
  • JavaScript中的parse()方法使用簡介

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

    這篇文章主要介紹了JavaScript中的parse()方法使用簡介,是JS入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-06-06
  • JavaScript中用sort()方法對數(shù)組元素進(jìn)行排序的操作

    JavaScript中用sort()方法對數(shù)組元素進(jìn)行排序的操作

    這篇文章主要介紹了JavaScript中用sort()方法對數(shù)組元素進(jìn)行排序的操作,是JS入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-06-06
  • 淺析javascript的間隔調(diào)用和延時調(diào)用

    淺析javascript的間隔調(diào)用和延時調(diào)用

    文章主要通過小實(shí)例談?wù)刯avascript的間隔調(diào)用和延時調(diào)用,非常的簡單實(shí)用,有需要的小伙伴可以參考下
    2014-11-11
  • javascript學(xué)習(xí)(一)構(gòu)建自己的JS庫

    javascript學(xué)習(xí)(一)構(gòu)建自己的JS庫

    庫是一個飽受爭議的熱門話題。一種觀點(diǎn)認(rèn)為它是一種非常棒的工具,是任何開發(fā)者都不可或缺的;另一種觀點(diǎn)則認(rèn)為在不理解庫的內(nèi)部工作原理的情況下對庫形成依賴,會助長懶惰的風(fēng)氣從而導(dǎo)致開發(fā)者素質(zhì)下降
    2013-01-01
  • javascript中字符串的定義示例代碼

    javascript中字符串的定義示例代碼

    javascript中字符串如何定義,下面有個不錯的示例,大家可以學(xué)習(xí)下
    2013-12-12
  • 淺析document.ready和window.onload的區(qū)別講解

    淺析document.ready和window.onload的區(qū)別講解

    這篇文章主要介紹了document.ready和window.onload的區(qū)別,有需要的朋友可以參考一下
    2013-12-12
  • 關(guān)于JavaScript的Array數(shù)組方法詳解

    關(guān)于JavaScript的Array數(shù)組方法詳解

    這篇文章主要介紹了關(guān)于JavaScript的Array數(shù)組方法詳解,數(shù)組是一個固定長度的存儲相同數(shù)據(jù)類型的數(shù)據(jù)結(jié)構(gòu),數(shù)組中的元素被存儲在一段連續(xù)的內(nèi)存空間中,它是最簡單的數(shù)據(jù)結(jié)構(gòu)之一,需要的朋友可以參考下
    2023-05-05
  • JavaScript代碼優(yōu)雅,簡潔的編寫技巧總結(jié)

    JavaScript代碼優(yōu)雅,簡潔的編寫技巧總結(jié)

    專業(yè)開發(fā)人員將為未來的自己和“其他人”編寫代碼,而不僅僅只編寫當(dāng)前能工作就行的代碼。在此基礎(chǔ)上,簡潔代碼可以定義為自解釋的、易于人理解的、易于更改或擴(kuò)展的代碼。以下列表一些好編寫方式,僅供參考
    2022-10-10

最新評論