1 /*
2 *对表单字段的名称和值进行URL编码,使用和号(&)分割。
3 *不发送禁用的表单字段。
4 *只发送勾选的复选框和单选按钮。
5 *不发送type为"reset"和"button"的按钮。
6 *多选选择框中的每个选中的值单独一个条目。
7 *在单击提交表单的情况下,也会发送提交按钮;否则,不发送提交按钮。也包括type为"image"的<input>元素。
8 *<select>元素的值,就是选中的<option>元素的value特性的值。如果<option>元素没有value特性,则是<option>元素的文本值。
9 */
10
11 function serialize(form) {
12 var parts =
new Array();
13 var field =
null;
14
15 for (
var i = 0, len = form.elements.length; i < len; i++
) {
16 field =
form.elements[i];
17
18 switch (field.type) {
19 case "select-one"
:
20 case "select-multiple"
:
21 for (
var j = 0, optLen = field.options.length; j < optLen; j++
) {
22 var option =
field.options[i];
23 if (option.selected) {
24 var optValue = ""
;
25 if (option.hasAttribute) {
26 optValue = (option.hasAttribute("value") ?
option.value : option.text);
27 }
else {
28 optValue = (option.attributes["value"].specified ?
option.value : option.text);
29 }
30 parts.push(encodeURIComponent(field.name) + "=" +
encodeURIComponent(optValue));
31 }
32 }
33 break;
34 case undefined:
35 //字段集
36 case "file"
:
37 //文件输入
38 case "submit"
:
39 //提交按钮
40 case "reset"
:
41 //重置按钮
42 case "button"
:
43 //自定义按钮
44 break;
45 case "radio"
:
46 //单选按钮
47 case "checkbox"
:
48 //复选框
49 if (!
field.checkbox) {
50 break;
51 }
/* 执行默认操作 */
52 default:
53 parts.push(encodeURIComponent(field.name) + "=" +
encodeURIComponent(field.value));
54 }
55 }
56 return parts.join("&"
);
57 }
转载于:https://www.cnblogs.com/qzsonline/archive/2012/06/04/2535183.html