zoukankan      html  css  js  c++  java
  • 表单序列化

     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 }
  • 相关阅读:
    redis性能优化、内存分析及优化
    代码质量审核和管理工具分析比较
    SpringBoot集成Nacos
    Navicat,Dbeaver,heidiSql,DataGrip数据库连接工具比较
    python报错:
    6.Python深入_内存管理
    Win7安装python第三方模块objgraph报错
    5.Python深入_装饰器
    4.Python深入_闭包
    1.Python深入_对象的属性
  • 原文地址:https://www.cnblogs.com/qzsonline/p/2535183.html
Copyright © 2011-2022 走看看