フォーム書式設定プラグイン jquery.serializeJSON

巴扎黑
リリース: 2017-06-23 10:59:58
オリジナル
1333 人が閲覧しました

前書き

フロントエンドが大量のデータ送信を含むフォームを処理する場合、フォームを使用してページを直接送信して更新することに加えて、よく発生する要件は、フォーム情報をデータ オブジェクトに収集し、 Ajax 経由で送信します。

複雑なフォームを扱う場合、フィールドの値を一つ一つ手動で判断して処理する必要があり、非常に面倒です。次に紹介するプラグインはこの問題を解決します。

serializeJSON について

jquery.serializeJSON を使用すると、.serializeJSON() メソッドを呼び出して、jQuery または Zepto オブジェクトに基づいてページ内のフォーム データを JS にシリアル化できます。 。 jquery.serializeJSON,可以在基于jQuery或者Zepto的页面中,调用 .serializeJSON() 方法来序列化form表单的数据成JS对象。

使用

只需要在jQuery或者Zepto时候引入即可

示例

 

HTML form(支持inputtextareaselect等标签)

javascript

serializeJSON方法返回一个JS对象,并非JSON字符串。可以使用 JSON.stringify 转换成字符串(注意IE8兼容性)。

JavaScript权威指南(第6版)(中文版) 

指定数据类型

获取到的属性值一般是字符串,可以通过HTML指定类型 : type 进行强制转换。

数据类型也可以指定在 data-value-type 属性中,代替 :type 标记。

options配置

默认配置

  • Values始终为字符串(除非在input names使用:types )

  • Keys始终为字符串(默认不自动检测是否需要转换为数组)

  • 未选择的checkboxes会被忽略

  • disabledelements会被忽略

自定义配置

写法                                 释义
checkboxUncheckedValue: string      针对未勾选的checkboxes,设定值
parseBooleans: true                 自动检测转换”true”、”false”为布尔值true、false
parseNumbers: true                  自动检测转换”1″、”33.33″、”-44″为数字1、33.33、-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

🎜🎜🎜🎜 例 🎜🎜 🎜🎜HTMLフォーム (inputをサポートします) 、textareaselect およびその他のタグ) 🎜🎜🎜 🎜
🎜
var emptyStringsAndZerosToNulls = function(val, inputName) {  if (val === "") return null; // parse empty strings as nulls
  if (val === 0)  return null; // parse 0 as null
  return val;
}
 
$('form').serializeJSON({parseWithFunction: emptyStringsAndZerosToNulls, parseNumbers: true}); 
// returns =>{  "bool": {"true": "true","false": "false",
  }  "number": {"0": null, // <-- parsed with custom function"1": 1,"2.2": 2.2,"-2.25": -2.25,
  }  "null": "null",  "string": "text is always string",  "empty": null // <-- parsed with custom function}
ログイン後にコピー
ログイン後にコピー
🎜🎜 🎜🎜🎜🎜javascript code >:🎜🎜🎜🎜<div class="crayon-main">🎜<div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">&lt;form&gt;   &lt;input type=&quot;text&quot; name=&quot;scary:alwaysBoo&quot; value=&quot;not boo&quot;/&gt;   &lt;input type=&quot;text&quot; name=&quot;str:string&quot; value=&quot;str&quot;/&gt;   &lt;input type=&quot;text&quot; name=&quot;number:number&quot; value=&quot;5&quot;/&gt; &lt;/form&gt;</pre><div class="contentsignin">ログイン後にコピー</div></div><div class="contentsignin">ログイン後にコピー</div></div>🎜🎜🎜🎜🎜🎜<code>serializeJSON メソッドは、JSON 文字列ではなく JS オブジェクトを返します。 JSON.stringify を使用して文字列に変換できます (IE8 との互換性に注意してください)。 🎜🎜The Definitive Guide to JavaScript (第 6 版) (中国語版) 🎜🎜🎜 🎜
$('form').serializeJSON({
  customTypes: {
    alwaysBoo: function(str) { // value is always a string  return "boo";
    },
    string: function(str) { // all strings will now end with " override"  return str + " override";
    }
  }
}); 
// returns =>{  "scary": "boo",        // <-- parsed with type :alwaysBoo
  "str": "str override", // <-- parsed with new type :string (instead of the default)
  "number": 5,           // <-- the default :number still works}
ログイン後にコピー
ログイン後にコピー
🎜🎜 🎜🎜🎜🎜データ型を指定する🎜🎜 取得される属性値は通常文字列であり、HTML を通じて型を指定できます。強制変換のタイプ。 🎜🎜🎜 🎜
🎜
// Select only imputs that have a non-empty value$(&#39;form :input[value!=""]&#39;).serializeJSON(); 
// Or filter them from the formobj = $(&#39;form&#39;).find(&#39;input&#39;).not(&#39;[value=""]&#39;).serializeJSON(); 
// For more complicated filtering, you can use a functionobj = $form.find(&#39;:input&#39;).filter(function () {          return $.trim(this.value).length > 0  }).serializeJSON();
ログイン後にコピー
ログイン後にコピー
🎜🎜
<form>
  <input type="text" name="arr[0]" value="foo"/>
  <input type="text" name="arr[1]" value="var"/>
  <input type="text" name="arr[5]" value="inn"/>
</form>
ログイン後にコピー
ログイン後にコピー
🎜🎜 🎜🎜🎜🎜 データ型は、data-value-type 属性で指定することもできます。 code> :type タグ。 🎜🎜🎜 🎜
$('form').serializeJSON(); 
// returns =>{'arr': {'0': 'foo', '1': 'var', '5': 'inn' }}
ログイン後にコピー
ログイン後にコピー
🎜🎜 🎜🎜🎜🎜オプション設定🎜

デフォルト設定

  • 🎜値は常に文字列です( 入力名:types を使用します)🎜
  • 🎜Keys は常に文字列です (デフォルトでは、文字列である必要があるかどうかは自動的に検出されません)配列に変換されます)🎜
  • 🎜選択されていない チェックボックス は無視されます🎜
  • 🎜無効要素 は無視されます 無視します 🎜

カスタム構成

🎜
$('form').serializeJSON({useIntKeysAsArrayIndex: true}); 
// returns =>{'arr': ['foo', 'var', undefined, undefined, undefined, 'inn']}
ログイン後にコピー
ログイン後にコピー
🎜🎜 🎜🎜🎜 チェックされていないチェックボックスが含まれます🎜🎜serializeJSON は をサポートしますcheckboxUncheckedValue 構成を使用するか、 checkboxesdata-unchecked-value 属性を追加できます。 🎜🎜デフォルトメソッド: 🎜🎜🎜 🎜
🎜
$.serializeJSON.defaultOptions.parseAll = true; // parse booleans, numbers and nulls by default $('form').serializeJSON(); // No options => then use $.serializeJSON.defaultOptions
 // returns =>{  "bool": {"true": true,"false": false,
  }  "number": {"0": 0,"1": 1,"2.2": 2.2,"-2.25": -2.25,
  }  "null": null,  "string": "text is always string",  "empty": ""}
ログイン後にコピー
ログイン後にコピー
🎜🎜rrreee🎜🎜 🎜🎜🎜🎜 上記の書き込みメソッドは、チェックされていないチェックボックスを無視します。これを含める必要がある場合は、次の方法を使用できます: 🎜🎜1. checkboxUncheckedValue を設定します🎜🎜🎜 🎜
🎜rrreee🎜🎜 🎜🎜🎜🎜2 data-unchecked-value 属性を追加します🎜🎜🎜🎜rrreee🎜🎜rrreee🎜🎜🎜🎜🎜🎜変換タイプを自動的に検出します🎜🎜デフォルトのタイプは文字列 :string です他のタイプに変換します🎜🎜🎜🎜rrreee🎜🎜🎜🎜🎜

在极少数情况下,可以使用自定义转换函数

自定义类型

可以使用 customTypes 配置自定义类型或者覆盖默认类型($.serializeJSON.defaultOptions.defaultTypes

忽略空表单字段

// Select only imputs that have a non-empty value$(&#39;form :input[value!=""]&#39;).serializeJSON(); 
// Or filter them from the formobj = $(&#39;form&#39;).find(&#39;input&#39;).not(&#39;[value=""]&#39;).serializeJSON(); 
// For more complicated filtering, you can use a functionobj = $form.find(&#39;:input&#39;).filter(function () {          return $.trim(this.value).length > 0  }).serializeJSON();
ログイン後にコピー
ログイン後にコピー

使用整数keys作为数组的顺序

使用useIntKeyAsArrayIndex配置

按照默认的方法,结果为:

使用useIntKeyAsArrayIndex可以将记过转换为数组并制定顺序

默认配置Defaults

所有的默认配置均定义在 $.serializeJSON.defaultOptions,可以进行修改。

总结

这个插件支持的配置非常丰富,自定义程度很高,带来很大的便捷性。

以上がフォーム書式設定プラグイン jquery.serializeJSONの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
前の記事:jquery.validata.js プラグイン コレクション、必要なものはすべてここにあります 次の記事:每天一个JS 小demo之通过事件委托实现菜单展开及选中特效。主要知识点:事件
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
最新の問題
関連トピック
詳細>
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート