美文网首页
46.项目 1-博客前端:封装库--表单序列化

46.项目 1-博客前端:封装库--表单序列化

作者: 好像在哪见过你丶 | 来源:发表于2019-05-20 09:26 被阅读0次

    学习要点:

    1.问题所在
    2.设置代码

    如果不采用传统的 form 提交数据,而采用 ajax 提交,就必须将表单的数据通过 ajax 传
    递到服务器端,但每个表单都需要逐一编写显得有点麻烦。所以,我们采用表单序列化的方
    法解决这一问题。

    一.问题所在

    使用表单序列化,可以解决多次表单获取键值对的功能。
    表单序列化的几个要求:

    1.不发送禁用的表单字段;
    2.只发送勾选的复选框和单选按钮;
    3.不发送 type 是 reset、submit、file 和 button 以及字段集;
    4.多选选择框中的每个选中的值单独一个条目;
    5.对于<select>,如果有 value 值,就指定为 value 作为发送的值。如果没有,就指定 text 值。

    二.设置代码

    JS 代码

    //表单序列化
    $().extend('serialize', function () {
    for (var i = 0; i < this.elements.length; i ++) {
    var parts = {};
    var field = null;
    var form = this.elements[i];
    for (var i = 0; i < form.elements.length; i ++) {
    field = form.elements[i];
    switch (field.type) {
    case 'select-one' :
    case 'select-multiple' :
    for (var j = 0; j < field.options.length; j++) {
    var option = field.options[j];
    if (option.selected) {
    var optValue = '';
    if (option.hasAttribute) {
    optValue = (option.hasAttribute('value') ?
    option.value : option.text);
    } else {
    optValue = (option.attributes['value'].specified ?
    option.value :
    option.text);
    }
    parts[field.name] = optValue;
    }
    }
    break;
    case undefined :
    case 'file' :
    case 'submit' :
    case 'reset' :
    case 'button' :
    break;
    case 'radio' :
    case 'checkbox' :
    if (!field.checked) {
    break;
    }
    default :
    parts[field.name] = field.value;
    }
    }
    return parts;
    }
    return this;
    });
    

    感谢收看本次教程!

    相关文章

      网友评论

          本文标题:46.项目 1-博客前端:封装库--表单序列化

          本文链接:https://www.haomeiwen.com/subject/nbdhzqtx.html