zoukankan      html  css  js  c++  java
  • 重写jQuery serialize方法,使文本框在没有输入的情况下,使用其支持默认值

    未压缩版

     1 jQuery.fn.extend({
     2     serialize:function() {
     3         return jQuery.param(this.serializeArray());
     4     },
     5     serializeArray:function() {
     6         var rbracket = /[]$/, rCRLF = /
    ?
    /g, rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, rsubmittable = /^(?:input|select|textarea|keygen)/i;
     7         var rcheckableType = /^(?:checkbox|radio)$/i;
     8         var rtagName = /<([a-z][^/>x20	
    f]+)/i;
     9         var rscriptType = /^$|/(?:java|ecma)script/i;
    10         return this.map(function() {
    11             var elements = jQuery.prop(this, "elements");
    12             return elements ? jQuery.makeArray(elements) :this;
    13         }).filter(function() {
    14             var type = this.type;
    15             return this.name && !jQuery(this).is(":disabled") && rsubmittable.test(this.nodeName) && !rsubmitterTypes.test(type) && (this.checked || !rcheckableType.test(type));
    16         }).map(function(i, elem) {
    17             var val = jQuery(this).val();
    18             if (val == null) {
    19                 return null;
    20             }
    21             if (val == "") {
    22                 if (jQuery(this).is("[default]")) {
    23                     val = jQuery(this).attr("default");
    24                 }
    25             }
    26             if (Array.isArray(val)) {
    27                 return jQuery.map(val, function(val) {
    28                     return {
    29                         name:elem.name,
    30                         value:val.replace(rCRLF, "
    ")
    31                     };
    32                 });
    33             }
    34             return {
    35                 name:elem.name,
    36                 value:val.replace(rCRLF, "
    ")
    37             };
    38         }).get();
    39     }
    40 });

     压缩版

    jQuery.fn.extend({ serialize: function () { return jQuery.param(this.serializeArray()) }, serializeArray: function () { var rbracket = /[]$/, rCRLF = /
    ?
    /g, rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, rsubmittable = /^(?:input|select|textarea|keygen)/i; var rcheckableType = (/^(?:checkbox|radio)$/i); var rtagName = (/<([a-z][^/>x20	
    f]+)/i); var rscriptType = (/^$|/(?:java|ecma)script/i); return this.map(function () { var elements = jQuery.prop(this, "elements"); return elements ? jQuery.makeArray(elements) : this }).filter(function () { var type = this.type; return this.name && !jQuery(this).is(":disabled") && rsubmittable.test(this.nodeName) && !rsubmitterTypes.test(type) && (this.checked || !rcheckableType.test(type)) }).map(function (i, elem) { var val = jQuery(this).val(); if (val == null) { return null } if (val == "") { if (jQuery(this).is("[default]")) { val = jQuery(this).attr("default") } } if (Array.isArray(val)) { return jQuery.map(val, function (val) { return { name: elem.name, value: val.replace(rCRLF, "
    ") } }) } return { name: elem.name, value: val.replace(rCRLF, "
    ") } }).get() } });

      文本框的添加属性 default

    <form id="from">
    <input type="input" name="name" default="test"/>
    </form>

    使用方法

    $("#form").serialize();
  • 相关阅读:
    Chrome cookies folder
    Fat URLs Client Identification
    User Login Client Identification
    Client IP Address Client Identification
    HTTP Headers Client Identification
    The Personal Touch Client Identification 个性化接触 客户识别
    购物车 cookie session
    购物车删除商品,总价变化 innerHTML = ''并没有删除节点,内容仍存在
    453
    购物车-删除单行商品-HTMLTableElement.deleteRow()
  • 原文地址:https://www.cnblogs.com/zhuyue/p/9160189.html
Copyright © 2011-2022 走看看