JavaScript示例十(表单序列化)

<!doctype html>
<html lang="en">
 <head>
  <meta charset="UTF-8">
  <title>表单序列化</title>
 </head>
 <body>
  <div style="width:350px;height:200px;background-color:YellowGreen">
  <form id="myform">
	<input type="text" name="text" value="default value">
	<br/>

	<input type="radio" name="sex" value="male" /> Male
	<input type="radio" name="sex" value="female"/>Female
	<br/>

	<input type="checkbox" name="bike"/>My bike.
	<input type="checkbox" name="car" />My car.
	<br/>

	<select name="cars">
		<option value="volvo">Volvo</option>
		<option value="saab">Benz</option>
		<option value="fiat">BMW</option>
		<option value="audi">Audi</option>
	</select>

	<select name="name" multiple="multiple">
		<option value ="zhangsan">zhangsan</option>
		<option value="lisi">lisi</option>
		<option value ="wangwu">wangwu</option>
		<option value="zhaoliu">zhaoliu</option>
	</select>
	<br/>

	<input type="button" onclick="show()" value="show form serialize">
  </form>
  </div>

  <textarea id="mytext" cols="42" rows="5"></textarea>

  <script>
	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){
								optValue="";
								if(option.hasAttribute){
									optValue=(option.hasAttribute("value")?
									option.value:option.text);
								}else{
									optValue=(option.attributes["value"].specified?
									option.value:option.text);
								}
								parts.push(encodeURIComponent(field.name)+"="+
										   encodeURIComponent(optValue));
							}
						}
					}
					break;
				case undefined://默认处理
				case "file"://默认处理
				case "submit"://默认处理
				case "reset"://默认处理
				case "button"://不处理
					break;
				case "radio"://默认处理
				case "checkbox":
					if(!field.checked){
						break;
					}
				default://默认处理,要求必须有name属性
					if(field.name.length){
						parts.push(encodeURIComponent(field.name)+"="+
								   encodeURIComponent(field.value));
					}
			}
		}
		return parts.join("&");
	}

	function show(){
		var myform=document.getElementById("myform");
		var mytext=document.getElementById("mytext");

		mytext.value = serialize(myform);
	}
  </script>

 </body>
</html>

时间: 2024-08-22 18:03:18

JavaScript示例十(表单序列化)的相关文章

JavaScript表单序列化的方法详解

本文介绍下,在javascript中实现表单序列化的方法,通过实例加深理解,有需要的朋友参考下吧. 在JavaScript中,可以利用表单字段的type属性,连同name和value属性一起实现对表单的序列. 首先,我们来了解下在表单提交期间,浏览器是怎样将数据发送给服务器的.对表单字段的名称和值进行URL编码,使用和号(&)分割.不发送禁用的表单字段.只发送勾选的复选框和单选按钮.不发送type为"reset"和"button"的按钮.多选择框中的每个选中

jQuery实现form表单序列化转换为json对象功能示例

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>jquery form序列化转换为json对象</title> <script src="//cdn.bootcss.com/jquery/3.0.0/jquery.min.js"></script> </script> </hea

JavaScript笔记:表单脚本

JavaScript最初的应用之一,就是分担服务器处理表单的责任,打破处处依赖服务器的局面. 1.表单的基础知识 在javascript中,表单是用HTMLFormElement类型来表示的.HTMLFormElement继承了HTMLElement,因而与其他HTML元素有相同的默认属性,不过HTMLFormElement也有它自己独有的属性和方法: acceptCharset:服务器能够处理的字符集 action:接受请求的URL elements:表单中所有控件的集合 enctype:请求

jquery将表单序列化json对象

$.fn.serializeObject = function () { var obj = {}; var count = 0; $.each(this.serializeArray(), function (i, o) { var n = o.name, v = o.value; count++; obj[n] = obj[n] === undefined ? v : $.isArray(obj[n]) ? obj[n].concat(v) : [obj[n], v]; }); //obj.

$.ajax、$.post、from表单序列化工具

$.ajax\$.post <script type="text/javascript" language="javascript" src="js/jquery-1.8.3.js" ></script> <script type="text/javascript"> //使用Ajax($.ajax)调用 function ajax(){ $.ajax({ type:"post&q

ajax提交表单序列化(serialize())数据

知识点: $("#form").serialize();将表单数据序列化为标准URL编码文本字符串(key1=value1&key2=value2…). 以下用一个例子来演示ajax提交表单序列化数据. 表单内容: <form id="f1"> <label for="realname" >姓名:</label><input type="text" name="rea

关于表单序列化的三种方法

表单序列化: 方法1:serialize(): 就是把表单信息序列化成一个字符串 (认为最常用 的方法) <html> <head> <script type="text/javascript" src="/jquery/jquery.js"></script> <script type="text/javascript"> $(document).ready(function(){ $

原生js实现form表单序列化

大家都知道在jquery中有相应的表单序列化的方法: 1.serialize()方法 格式:var data = $("form").serialize(); 功能:将表单内容序列化成一个字符串. 这样在ajax提交表单数据时,就不用一一列举出每一个参数.只需将data参数设置为 $("form").serialize() 即可. 2.serializeArray()方法 格式:var jsonData = $("form").serialize

待整理笔记(表单序列化操作、多态函数、对象的状态队列管理模式)

1.jquery的表单序列化操作 $('.form').serializeArray();通过serializeArray()方法得到表单form(class=“form”)的dom结点下所有含有name值的节点的value值的一个数组; 这个数组由多个对象构成,每个对象有name和value两个key值. 2.编程的多态性思想 利用函数的参数数组arguments,通过判断数组的长度来选择性执行某个功能: 例如: store: function(namespace, data, remove)