说说 JavaScript 实现表单序列化的解决方案(附源码)
来源:互联网 发布:主域名服务器ip地址 编辑:程序博客网 时间:2024/05/16 10:08
Ajax 的流行,导致了表单序列化需求非常普遍。表单提交时,浏览器是这样把数据发送给服务器的:
- 对表单字段的名称和值进行 URL 编码,使用
&
分隔。 - 不发送禁用的表单字段。
- 只发送勾选的复选框和单选按钮。
- 不发送 type 为 “reset” 和 “button” 的按钮。
- 多选的选择框的每一个选中的值会单独列一个条目。
- 只有在单击提交按钮(包括 type 为 image 的
<input>
元素)提交表单时,会发送提交按钮。 <select>
元素的值,就是选中的<option>
元素的 value 属性值,如果<option>
元素没有 value 属性,那么就是<option>
元素的文本值。
表单序列化代码如下:
<script type="text/javascript"> function serialize(form) { var parts = [],//保存要创建的字符串的各个部分 field = null, i, len, j, optLen, option, optValue; for (i = 0, len = form.elements.length; i < len; i++) {//循环迭代每一个表单字段 field = form.elements[i]; switch (field.type) { case "select-one"://单选 case "select-multiple"://多选 if (field.name.length) { for (j = 0, optLen = field.options.length; j < optLen; j++) {//遍历选择框的每一个选项 option = field.options[j]; if (option.selected) {//如果不存在 value 属性或者它为空字符串,就使用文本属性 optValue = ""; if (option.hasAttribute) {//DOM optValue = (option.hasAttribute("value") ? option.value : option.text); } else {//IE optValue = (option.attributes["value"].specified ? option.value : option.text); } parts.push(encodeURIComponent(field.name) + "=" + encodeURIComponent(optValue)); } } } break; case undefined://字段集(fieldset) case "file"://文件输入 case "submit"://提交按钮 case "reset"://重置按钮 case "button"://自定义按钮 break;//不处理 case "radio"://单选按钮 case "checkbox"://复选框 if (!field.checked) {//没有选中,则直接进入下一迭代 break; } //执行默认操作 default: //不包含没有名字的表单字段 if (field.name.length) { parts.push(encodeURIComponent(field.name) + "=" + encodeURIComponent(field.value)); } } } return parts.join("&"); }</script>
阅读全文
0 0
- 说说 JavaScript 实现表单序列化的解决方案(附源码)
- JavaScript--表单的序列化
- javascript项目表单验证栏(附源码)
- 使用ajax方法实现form表单的提交(附源码)
- 说说使用 JavaScript 解析以及序列化 JSON 的方法
- JavaScript表单序列化
- 说说 JavaScript 表单的选择框脚本
- JavaScript示例十(表单序列化)
- Java五子棋的实现(附源码)
- 说说 JavaScript 对用户代理的检测技术(附完整源代码)
- 用javascript序列化表单
- bootstrap+springMVC中使用bootstrapValidator实现表单验证(附源码!!!)
- jquery表单实现表单序列化
- jQuery源码分析 :表单序列化动作
- 基于时间序列的短期数据预测--ARMA模型的设计与实现(每个步骤附实现源码)
- 软件网络认证的实现(附源码)
- Android录音时指针摆动的实现(附源码)
- Android录音时指针摆动的实现(附源码)
- 查看oracle建表语句
- Java截取字符串的三种方法
- C++给QML传QImage
- jhost 邀请码 (更新)
- android 5.0 mediacodec demo
- 说说 JavaScript 实现表单序列化的解决方案(附源码)
- 我的测试之路
- event.keyCode ,event.which ,event.charCode
- 将MYSQL表结构导入到SQL Server中,也可互换操作
- javascript中event.keycode大全
- c++多态 讲得清晰易懂
- android nfc开发
- 用js创建XMLHttpRequest对象池
- 云计算与集群、虚拟机