JQuery笔记

记两段代码,使用JQuery实现从表单获取json与后端交互,以及把后端返回的json映射到表单相应的字段上。

把表单转换出json对象


  1. //把表单转换出json对象
  2. $.fn.toJson = function () {
  3. var self = this,
  4. json = {},
  5. push_counters = {},
  6. patterns = {
  7. "validate": /^[a-zA-Z][a-zA-Z0-9_]*(?:\[(?:\d*|[a-zA-Z0-9_]+)\])*$/,
  8. "key": /[a-zA-Z0-9_]+|(?=\[\])/g,
  9. "push": /^$/,
  10. "fixed": /^\d+$/,
  11. "named": /^[a-zA-Z0-9_]+$/
  12. };
  13. this.build = function (base, key, value) {
  14. base[key] = value;
  15. return base;
  16. };
  17. this.push_counter = function (key) {
  18. if (push_counters[key] === undefined) {
  19. push_counters[key] = 0;
  20. }
  21. return push_counters[key]++;
  22. };
  23. $.each($(this).serializeArray(), function () {
  24. // skip invalid keys
  25. if (!patterns.validate.test(this.name)) {
  26. return;
  27. }
  28. var k,
  29. keys = this.name.match(patterns.key),
  30. merge = this.value,
  31. reverse_key = this.name;
  32. while ((k = keys.pop()) !== undefined) {
  33. // adjust reverse_key
  34. reverse_key = reverse_key.replace(new RegExp("\\[" + k + "\\]$"), '');
  35. // push
  36. if (k.match(patterns.push)) {
  37. merge = self.build([], self.push_counter(reverse_key), merge);
  38. }
  39. // fixed
  40. else if (k.match(patterns.fixed)) {
  41. merge = self.build([], k, merge);
  42. }
  43. // named
  44. else if (k.match(patterns.named)) {
  45. merge = self.build({}, k, merge);
  46. }
  47. }
  48. json = $.extend(true, json, merge);
  49. });
  50. return json;
  51. };

将josn对象赋值给form,使表单控件也显示相应的状态

  1. //将josn对象赋值给form
  2. $.fn.loadData = function (obj) {
  3. var key, value, tagName, type, arr;
  4. this.reset();
  5. for (var x in obj) {
  6. if (obj.hasOwnProperty(x)) {
  7. key = x;
  8. value = obj[x];
  9. this.find("[name='" + key + "'],[name='" + key + "[]']").each(function () {
  10. tagName = $(this)[0].tagName.toUpperCase();
  11. type = $(this).attr('type');
  12. if (tagName == 'INPUT') {
  13. if (type == 'radio') {
  14. if ($(this).val() == value) {
  15. $(this).attr('checked', true);
  16. }
  17. } else if (type == 'checkbox') {
  18. arr = value.split(',');
  19. for (var i = 0; i < arr.length; i++) {
  20. if ($(this).val() == arr[i]) {
  21. $(this).attr('checked', true);
  22. break;
  23. }
  24. }
  25. } else {
  26. $(this).val(value);
  27. }
  28. } else if (tagName == 'SELECT' || tagName == 'TEXTAREA') {
  29. $(this).val(value);
  30. }
  31. });
  32. }
  33. }
  34. }

(笔记)JQuery扩展方法实现Form表单与Json互相转换的更多相关文章

  1. JQuery扩展方法实现Form表单与Json互相转换

    1.把表单转换出json对象 //把表单转换出json对象 $.fn.toJson = function () { var self = this, json = {}, push_counters ...

  2. form表单转化json对象

    利用 $.fn 可以让每一个jquery 对象都能直接使用这个方法. //form表单转化json对象$.fn.serializeObject = function () { var o = {}; ...

  3. jquery实现ajax提交form表单的方法总结

    本篇文章主要是对jquery实现ajax提交form表单的方法进行了总结介绍,需要的朋友可以过来参考下,希望对大家有所帮助 方法一:  function AddHandlingFeeToRefund( ...

  4. 使用ajax方法实现form表单的提交(附源码)

    写在前面的话 在使用form表单的时候,一旦点击提交触发submit事件,一般会使得页面跳转,页面间的跳转等行为的控制权往往在后端,后端会控制页面的跳转及数据传递,但是在某些时候不希望页面跳转,或者说 ...

  5. 使用ajax方法实现form表单的提交

    作者:13 GitHub:https://github.com/ZHENFENG13 版权声明:本文为原创文章,未经允许不得转载. 写在前面的话 在使用form表单的时候,一旦点击提交触发submit ...

  6. form表单转换为Json字符串数据

    https://github.com/marioizquierdo/jquery.serializeJSON 效果图 加载使用 <script type="text/javascrip ...

  7. jquery实现ajax提交form表单的方法总结(转)

    方法一: 复制代码 代码如下: function AddHandlingFeeToRefund() {            var AjaxURL= "../OrderManagement ...

  8. jquery的ajax提交form表单方式总结

    方法一: function AddHandlingFeeToRefund() { var AjaxURL= "../OrderManagement/AjaxModifyOrderServic ...

  9. 3..jquery的ajax获取form表单数据

    jq是对dom进行的再次封装.是一个js库,极大简化了js使用 jquery库在js文件中,包含了所有jquery函数,引用:<script src="jquery-1.11.1.mi ...

随机推荐

  1. PHP数据库链接类(PDO+Access)

    PHP PDO Access链接 class DbHelpClass { private $conn; private $qxId; private $ret; function __construc ...

  2. Hibernate与 MyBatis的比较(转,留作以后细细钻研)

    最近做了一个Hibernate与MyBatis的对比总结,希望大家指出不对之处. 第一章     Hibernate与MyBatis Hibernate 是当前最流行的O/R mapping框架,它出 ...

  3. Java之聊天室系统设计一

    任务: 先上实现效果图: 登陆界面: index.jsp: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN& ...

  4. mysql的基本的数据库的查询

    学习一个数据库我们要学习哪些东西: sql数据库的话, curd. 对于查询,要注意表的关联的查询. 索引,触发器,对于控制连接量,脚本, 数据库的可视化工具,权限管理. http://www.360 ...

  5. 配置Eclipse可以查看JDK类库源码

    一.配置方法 配置Eclipse可以查看JDK类库源码 Window->Preferences->Java->Installed JREs 若没有JRE,需要自己添加进来,有的话,点 ...

  6. java 使用注释校验数据有效性

    验证注解 验证的数据类型 说明 空检查 @Null 任意类型 验证注解的元素值是null @NotNull 任意类型 验证注解的元素不是null @NotBlank CharSequence子类型(C ...

  7. tarball安装GnuPG (gpg) 2.2.10

    https://www.gnupg.org/download/ mac 方式一:推荐 mac $ brew install gpg pinentry pinentry-mac $ echo " ...

  8. 总结网站Mysql优化

    Mysql存储引擎 选择合适的存储引擎Innodb  myisam myisam: 写入数据非常快,适合使用场合dedecms/phpcms/discuz/微博系统等写入.读取操作多的系统. inno ...

  9. Linux 策略路由配置

    策略路由配置 #编辑rt_tables echo "192 net_192 " >> /etc/iproute2/rt_tables echo "196 ne ...

  10. SQL server 数据库用户表名称

    转自(http://blog.163.com/jlj_sk/blog/static/22579293200861422833924/) 取得SQL server 数据库中 所有用户表名称 select ...