国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

jQuery擴展方法實現Form表單與Json互相轉換的實例代碼

2024-05-06 15:30:36
字體:
來源:轉載
供稿:網友

JQuery筆記

記兩段代碼,使用JQuery實現從表單獲取json與后端交互,以及把后端返回的json映射到表單相應的字段上。

把表單轉換出json對象

//把表單轉換出json對象  $.fn.toJson = function () {    var self = this,      json = {},      push_counters = {},      patterns = {        "validate": /^[a-zA-Z][a-zA-Z0-9_]*(?:/[(?:/d*|[a-zA-Z0-9_]+)/])*$/,        "key": /[a-zA-Z0-9_]+|(?=/[/])/g,        "push": /^$/,        "fixed": /^/d+$/,        "named": /^[a-zA-Z0-9_]+$/      };    this.build = function (base, key, value) {      base[key] = value;      return base;    };    this.push_counter = function (key) {      if (push_counters[key] === undefined) {        push_counters[key] = 0;      }      return push_counters[key]++;    };    $.each($(this).serializeArray(), function () {      // skip invalid keys      if (!patterns.validate.test(this.name)) {        return;      }      var k,        keys = this.name.match(patterns.key),        merge = this.value,        reverse_key = this.name;      while ((k = keys.pop()) !== undefined) {        // adjust reverse_key        reverse_key = reverse_key.replace(new RegExp("http://[" + k + "http://]$"), '');        // push        if (k.match(patterns.push)) {          merge = self.build([], self.push_counter(reverse_key), merge);        }        // fixed        else if (k.match(patterns.fixed)) {          merge = self.build([], k, merge);        }        // named        else if (k.match(patterns.named)) {          merge = self.build({}, k, merge);        }      }      json = $.extend(true, json, merge);    });    return json;  };

將josn對象賦值給form,使表單控件也顯示相應的狀態

//將josn對象賦值給form  $.fn.loadData = function (obj) {    var key, value, tagName, type, arr;    this.reset();    for (var x in obj) {      if (obj.hasOwnProperty(x)) {        key = x;        value = obj[x];        this.find("[name='" + key + "'],[name='" + key + "[]']").each(function () {          tagName = $(this)[0].tagName.toUpperCase();          type = $(this).attr('type');          if (tagName == 'INPUT') {            if (type == 'radio') {              if ($(this).val() == value) {                  $(this).attr('checked', true);              }            } else if (type == 'checkbox') {              arr = value.split(',');              for (var i = 0; i < arr.length; i++) {                if ($(this).val() == arr[i]) {                    $(this).attr('checked', true);                  break;                }              }            } else {              $(this).val(value);            }          } else if (tagName == 'SELECT' || tagName == 'TEXTAREA') {            $(this).val(value);          }        });      }    }  }

補充:下面看下jQuery兩種擴展方法

在jQuery中,有兩種擴展方法

1.類方法($.extend())

<script>    $.extend({    print1:function(name){      //print1是自己定義的函數名字,括號中的name是參數      console.log(name)    }  });   $.print1("坤") ;              //調用時直接$.函數名(參數);</script>               
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 泗洪县| 平安县| 郎溪县| 措美县| 洛隆县| 信丰县| 卢氏县| 临海市| 南部县| 成安县| 方城县| 周口市| 安康市| 容城县| 中山市| 阜南县| 龙川县| 织金县| 广州市| 乾安县| 青田县| 洮南市| 和林格尔县| 石狮市| 化隆| 电白县| 黎平县| 九台市| 酉阳| 利川市| 北京市| 建始县| 丹阳市| 洞头县| 昭通市| 塔城市| 电白县| 泽普县| 沙河市| 沙河市| 吉木乃县|