> 웹 프론트엔드 > JS 튜토리얼 > 양식 형식 지정 플러그인 jquery.serializeJSON

양식 형식 지정 플러그인 jquery.serializeJSON

巴扎黑
풀어 주다: 2017-06-23 10:59:58
원래의
1343명이 탐색했습니다.

머리말

프런트 엔드에서 대량의 데이터 제출이 포함된 양식을 처리할 때 양식을 사용하여 페이지를 직접 제출하고 새로 고치는 것 외에도 자주 발생하는 요구 사항은 양식 정보를 데이터 객체로 수집하고 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 형식(입력 지원) , textarea, select 및 기타 태그) 🎜🎜🎜 🎜
🎜
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 호환성 참고). 🎜🎜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 속성에서 :type 태그입니다. 🎜🎜🎜 🎜
$('form').serializeJSON(); 
// returns =>{'arr': {'0': 'foo', '1': 'var', '5': 'inn' }}
로그인 후 복사
로그인 후 복사
🎜🎜 🎜🎜🎜🎜options 구성🎜

기본 구성

  • 🎜값은 항상 문자열입니다( 입력 이름 :types 사용)🎜
  • 🎜는 항상 문자열입니다(기본값은 문자열이 필요한지 여부를 자동으로 감지하지 않습니다). 배열로 변환됨)🎜
  • 🎜선택하지 않은 체크박스는 무시됩니다🎜
  • 🎜비활성화요소 는 무시됩니다. 무시 🎜

사용자 정의 구성

🎜
$('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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
이전 기사:jquery.validata.js 플러그인 컬렉션, 원하는 모든 것이 여기에 있습니다 다음 기사:每天一个JS 小demo之通过事件委托实现菜单展开及选中特效。主要知识点:事件
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
최신 이슈
관련 주제
더>
인기 추천
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿