表單格式化插件jquery.serializeJSON

前言

前端在處理含有大量數據提交的表單時,除了使用Form直接提交刷新頁面以外,常常碰到的需求是收集表單信息成數據對象,Ajax提交。javascript

而在處理複雜的表單時,須要一個一個區手動判斷處理字段值,顯得很是麻煩。接下來介紹的插件將解決這個問題。html

關於serializeJSON

使用jquery.serializeJSON,能夠在基於jQuery或者Zepto的頁面中,調用 .serializeJSON() 方法來序列化form表單的數據成JS對象。前端

使用

只須要在jQuery或者Zepto時候引入便可java

示例

 

HTML form(支持inputtextareaselect等標籤)jquery

javascriptjson

serializeJSON方法返回一個JS對象,並不是JSON字符串。可使用 JSON.stringify 轉換成字符串(注意IE8兼容性)。sublime-text

JavaScript權威指南(第6版)(中文版) http://www.gooln.com/document/452.html數組

指定數據類型

獲取到的屬性值通常是字符串,能夠經過HTML指定類型 : type 進行強制轉換。app

數據類型也能夠指定在 data-value-type 屬性中,代替 :type 標記。ide

options配置

默認配置

  • Values始終爲字符串(除非在input names使用:types )
  • Keys始終爲字符串(默認不自動檢測是否須要轉換爲數組)
  • 未選擇的checkboxes會被忽略
  • disabledelements會被忽略

自定義配置

寫法                                 釋義
checkboxUncheckedValue: string      針對未勾選的checkboxes,設定值
parseBooleans: true                 自動檢測轉換」true」、」false」爲布爾值true、false
parseNumbers: true                  自動檢測轉換」1″、」33.33″、」-44″爲數字一、33.3三、-44
parseNulls: true                    自動檢測字符串」null」爲null
parseAll: true                      自動檢測轉換以上類型的字符串
parseWithFunction: function         自定義轉換函數 function(value, name){return parsedValue}
customTypes: {}                     自定義:types覆蓋默認types,如{type: function(value){…}}
defaultTypes: {defaultTypes}        從新定義全部的:types,如{type: function(value){…}}
useIntKeysAsArrayIndex: true        當keys爲整數時,將序列化爲數組

 

 包含未勾選的checkboxes

serializeJSON 支持 checkboxUncheckedValue 配置,或者能夠在checkboxes添加 data-unchecked-value 屬性。

默認方法:

上面的寫法會忽略未勾選的複選框。若是須要包含,則可使用如下方法:

1. 配置checkboxUncheckedValue

2. 添加data-unchecked-value屬性

自動檢測轉換類型

默認的類型爲字符串 :string ,能夠經過配置轉換爲其它類型

在極少數狀況下,可使用自定義轉換函數

自定義類型

可使用 customTypes 配置自定義類型或者覆蓋默認類型($.serializeJSON.defaultOptions.defaultTypes

忽略空表單字段

// Select only imputs that have a non-empty value
$('form :input[value!=""]').serializeJSON();
 
// Or filter them from the form
obj = $('form').find('input').not('[value=""]').serializeJSON();
 
// For more complicated filtering, you can use a function
obj = $form.find(':input').filter(function () {
          return $.trim(this.value).length > 0
      }).serializeJSON();

使用整數keys做爲數組的順序

使用useIntKeyAsArrayIndex配置

按照默認的方法,結果爲:

使用useIntKeyAsArrayIndex能夠將記過轉換爲數組並制定順序

默認配置Defaults

全部的默認配置均定義在 $.serializeJSON.defaultOptions,能夠進行修改。

總結

這個插件支持的配置很是豐富,自定義程度很高,帶來很大的便捷性。

相關文章
相關標籤/搜索