formdata.js 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. (function ($) {
  2. $.extend($.fn, {
  3. //获取复选框的值。
  4. getCheckBoxValue:function(objJson,scope){
  5. $(':checkbox,:radio',scope).each(function(){
  6. var name=$(this).attr('name');
  7. objJson[name]='';
  8. });
  9. $(':checkbox:checked,:radio:checked',scope).each(function(){
  10. var name=$(this).attr('name');
  11. if(objJson[name]==''){
  12. objJson[name]=$(this).val();
  13. }
  14. else{
  15. objJson[name]+="," + $(this).val();
  16. }
  17. });
  18. },
  19. /**
  20. * 处理字段名称,现在字段名称为:
  21. * 主表: m:maintablename:fieldname
  22. * 子表: s:subtablename:fieldname
  23. * 变成单纯的
  24. * fieldname
  25. * */
  26. handleFieldName:function(){
  27. form=$(this);
  28. form.find('[name*=":"]').each(function(){
  29. var obj = $(this);
  30. var name=obj.attr('name');
  31. var strs = name.split(':');
  32. if(strs.length==3&&obj.attr('pk')!='true'){
  33. obj.attr('name',strs[2]);
  34. }
  35. });
  36. },
  37. sortList:function(){
  38. form=$(this);
  39. form.find('[type="subtable"]').each(function(){
  40. var tableId=this.id;
  41. var subTable=$(this);
  42. var index=0;
  43. subTable.find('[type="append"]').remove();
  44. subTable.find('[type="subdata"]').each(function(){
  45. $(this).find("input,select,textarea").each(function(){
  46. var name=$(this).attr('name');
  47. var sortName=tableId+'List'+'['+index+'].'+name;
  48. $(this).attr('name',sortName);
  49. });
  50. index++;
  51. });
  52. });
  53. form.find('div[type="sub"]').each(function(){
  54. $(this).find('table').each(function(){
  55. var tableId=this.id;
  56. var subTable=$(this);
  57. var index=0;
  58. subTable.find('tr[type="append"]').remove();
  59. subTable.find('tr[type="subdata"]').each(function(){
  60. $(this).find("input,select,textarea").each(function(){
  61. var name=$(this).attr('name');
  62. var sortName=tableId+'List'+'['+index+'].'+name;
  63. $(this).attr('name',sortName);
  64. });
  65. index++;
  66. });
  67. });
  68. });
  69. },
  70. setData:function(){
  71. var self=this;
  72. form=$(this);
  73. //找到主表
  74. var mainTable=form.find('[type="main"],.formTable');
  75. var main={};
  76. mainTable.find('input:text,input:hidden,textarea,select').each(function(){
  77. var value=$(this).val();
  78. var name=$(this).attr('name');
  79. if(value!=null&&value!=''){
  80. main[name]=value;
  81. }
  82. });
  83. form.children('input:hidden').each(function(){
  84. var value=$(this).val();
  85. var name=$(this).attr('name');
  86. if(value!=null&&value!=''){
  87. main[name]=value;
  88. }
  89. });
  90. //设定checkbox,radio的值。
  91. this.getCheckBoxValue(main,mainTable);
  92. //找到子表 遍历每一行 得到子表数据
  93. form.find('[type="sub"],[type="subtable"]').each(function(){
  94. var tableId=this.id;
  95. var jsonAry=[];
  96. var subTable=$(this);
  97. subTable.find('[type="subdata"]').each(function(){
  98. var subJson={};
  99. $(this).find('input:text,input:hidden,textarea,select').each(function(){
  100. var value=$(this).val();
  101. var name=$(this).attr('name');
  102. if(value!=null&&value!=''){
  103. subJson[name]=value;
  104. }
  105. });
  106. //设定checkbox,radio的值。
  107. self.getCheckBoxValue(subJson, subTable);
  108. if(subJson!={}){
  109. jsonAry.push(subJson);
  110. }
  111. });
  112. main[tableId+"List"]=jsonAry;
  113. });
  114. var mainStr=JSON2.stringify(main);
  115. $('textarea[name="json"]',form).remove();
  116. var json="<textarea style='display:none;' name='json'>"+mainStr+"</textarea>";
  117. form.append($(json));
  118. return form;
  119. }
  120. });
  121. })(jQuery);