javascript表单(form)序列化

function serialize(form){
    var part =[];
    var field = null;
    var i;
    var j;
    var len;
    var optLen;
    var option;
    var optVal;
    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){
                            optVal="";
                            if(option.hasAttribute){
                                optVal = (option.hasAttribute("value")?option.value:option.text);
                            }else{
                                optVal = (option.attributes["value"].specified?option.value:option.text);
                            }
                            part.push(encodeURIComponent(field.name)+"="+encodeURIComponent(optVal));
                        }
                    }
                }
                break;
            case undefined:// 字符集
            case "file":// 文件输入
            case "submit":// 提交按钮
            case "reset":// 重置按钮
            case "button":// 自定义按钮
                break;
            case "radio":// 单选按钮
            case "checkbox":// 复选框
                if(!field.checked){
                    break;
                }
            default:
                if(field.name.length){
                    part.push(encodeURIComponent(field.name) + "=" + encodeURIComponent(field.value));
                }
        }
    }
    return part.join("&");
}

1)对表单字段的名称和值进行URL编码,使用和号(&)分隔。

2)不发送禁用的表单字段

3)只发送勾选的复选框和单选按钮

4)不发送type为"reset"和”button"的按钮

5)多选框中每个选中的值单独一个条目

6)在单击提交按钮提交表单的情况下,也会发送提交按钮,否则不发送提交按钮。也包括type为“image”的<input>元素。

7)select元素的值就是选中的<option>元素的value的值,如果option元素没有value属性,则为选中的文本值。

转载于:https://www.cnblogs.com/smile361/p/3408252.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值