简单的封装在bootstrap框架下收集和获取数据的js.

没有跟上时代的初学者,没有学习新的三大框架,要下定决心学习学习。

不过在使用bootstrap框架在收集和获取数据的时候有着难以言表的重复大量数据,于是简单的封装了一个属于自己的js,自己感觉还是挺好用的,嘿嘿。

  1 <div class="well" id="well">
  2     <div class="form-horizontal form-pd">
  3         <div class="col-sm-4">
  4             <div class="form-group">
  5                 <label for="" class="col-sm-4 control-label text-right">名称<span class="c-red">*</span></label>
  6                 <div class="col-sm-7">
  7                     <input id="txtTitle_ArticleAdd" name="Title" type="text" class="form-control required" placeholder="文章名">
  8                 </div>
  9             </div>
 10             <div class="form-group">
 11                 <label for="" class="col-sm-4 control-label text-right">来源<span class="c-red">*</span></label>
 12                 <div class="col-sm-7">
 13                     <select name="source">
 14                         <option value="inter">网络</option>
 15                         <option value="book">书籍</option>
 16                     </select>
 17                 </div>
 18             </div>
 19             <div class="form-group">
 20                 <label for="" class="col-sm-4 control-label text-right">国籍<span class="c-red">*</span></label>
 21                 <div class="col-sm-7">
 22                     <input id="txtNationality_ArticleAdd" name="Nationality" type="text" class="form-control required">
 23                 </div>
 24             </div>
 25             <div class="form-group">
 26                 <label for="" class="col-sm-4 control-label text-right">专业</label>
 27                 <div class="col-sm-7">
 28                     <input id="txtProfession_ArticleAdd" name="Profession" type="text" class="form-control required">
 29                 </div>
 30             </div>
 31             
 32            
 33             <div class="form-group">
 34                 <label for="" class="col-sm-4 control-label text-right">第一作者</label>
 35                 <div class="col-sm-7">
 36                     <input id="txtFirstAuthor_ArticleAdd" name="FirstAuthor" type="text" class="form-control required">
 37                 </div>
 38             </div>
 39             <div class="form-group">
 40                 <label for="" class="col-sm-4 control-label text-right">影响因子</label>
 41                 <div class="col-sm-7">
 42                     <input id="txtInfluenceFactor_ArticleAdd" name="InfluenceFactor" type="text" class="form-control required">
 43                 </div>
 44             </div>
 45         </div>
 46         <div class="col-sm-4">
 47             <div class="form-group">
 48                 <label for="" class="col-sm-4 control-label text-right">所属参展商</label>
 49                 <div class="col-sm-7">
 50                     <input type="hidden" id="ArticleAdd_VenderID" name="VenderID" value="108221">
 51                     <input id="txtArticleAdd_VenderName" name="VenderName" type="text" class="form-control required">
 52                 </div>
 53             </div>
 54             <div class="form-group">
 55                 <label for="" class="col-sm-4 control-label text-right">刊名</label>
 56                 <div class="col-sm-7">
 57                     <input id="txtJournalName_ArticleAdd" name="JournalName" type="text"  class="form-control required">
 58                 </div>
 59             </div>
 60               
 61             <div class="form-group">
 62                 <label for="" class="col-sm-4 control-label text-right">手术</label>
 63                 <div class="col-sm-7">
 64                     <input id="txtOperation_ArticleAdd" name="Operation" type="text" class="form-control required">
 65                 </div>
 66             </div>
 67             <div class="form-group">
 68                 <label for="" class="col-sm-4 control-label text-right">页码</label>
 69                 <div class="col-sm-7">
 70                     <input id="txtPageNumber_ArticleAdd"  name="PageNumber" type="number" value="0" min="1" class="form-control required">
 71                 </div>
 72             </div>
 73             <div class="form-group">
 74                 <label for="" class="col-sm-4 control-label text-right">单位</label>
 75                 <div class="col-sm-7">
 76                     <select name="Company"> 
 77                         <option value="1">国企</option>
 78                         <option value="2">私企</option>
 79                     </select>
 80                 </div>
 81             </div>
 82         </div>
 83     </div>
 84     <div class="clear"></div>
 85 </div>
 86 <table class="table table-bordered"id="tables">
 87     <tr class="bg-cl">
 88         <th>参数ID</th>
 89         <th>参数值</th>
 90         <th>备注</th>
 91         <th>操作</th>
 92     </tr>
 93     <tr>
 94         <td >
 95             <input type="text" style="width: 100%" name="data1"/>
 96         </td>
 97         <td >
 98             <input type="text"  style="width: 100%" name="data2" />
 99         </td>
100         <td>
101             <input type="text" style="width: 100%"  name="data3" />
102         </td>
103         <td style="text-align: center;" onclick="trDelete(this)">
104             <button type="button" class="btn btn-xs btn-danger">删除</button>
105         </td>
106     </tr>
107 </table>
108 <div>
109     <button type="button" class="btn btn-xs btn-primary" onclick="trAdd()">添加</button>
110 </div>
111 <input type="button" name="savedata" id="test" value="提交" />
112 <script>
113     var json =
114     {
115         Company:"1",
116         FirstAuthor:"made",
117         InfluenceFactor:"没有",
118         JournalName:"起点",
119         Nationality:"中国",
120         Operation:"切割",
121         PageNumber:"12",
122         Profession:"写作",
123         Title:"中国古典文轩",
124         VenderID:"108221",
125         VenderName:"中国起点",
126         source: "book",
127         table: [{
128                 data1: "11", data2: "22", data3: "33"
129             }, {
130                 data1: "44", data2: "55", data3: "66"
131             }
132         ]
133     }
134     $(function () {
135         var json1 = new jsons();
136         json1.set($("#well"), $("#tables"), json);
137         $("#test").click(function () {
138             var root = json1.get($("#well"),$("#tables"));
139             console.log(root);
140         });
141     });
142 
143 </script>
View Code
  1 var jsons = function() {};
  2     jsons.prototype = {
  3         get: function (content, content1) {
  4             var field;
  5             var headdatas = new Object();
  6             var tabledatas = new Object();
  7             if (content[0].tagName.toLowerCase() == "div") {
  8                 headdatas = Gets(content);
  9             } else {
 10                 tabledatas = Gettable(content);
 11             }
 12             if (content1[0].tagName.toLowerCase() == "table") {
 13                 tabledatas = Gettable(content1);
 14             } else {
 15                 headdatas = Gets(content1);
 16             }
 17             var root = $.extend(headdatas, tabledatas);
 18             return root;
 19         },
 20         set: function (content1, content2, json) {
 21             var field;
 22             if (content1[0].tagName.toLowerCase() == "div") {
 23                 field = content1.find('input,textarea,select');
 24                 Fill(field, json);
 25             } else {
 26                 FillTableData(content1, json);
 27             }
 28             if (content2[0].tagName.toLowerCase() == "table") {
 29                FillTableData(content2, json);
 30             } else {
 31                 Fill(content2, json);
 32             }
 33         },
 34         del:function(content) {
 35             var id = delData(content);
 36             return id;
 37         }
 38     }
 39 //指定div 里面所有的input,textarea,raio,checkbox等。
 40 function Gets(content) {
 41     try {
 42         var lRoot = new Object();
 43         var field = content.find('input,textarea,select');
 44         lRoot = CollectionInputData(field);
 45         return lRoot;
 46 
 47     } catch (e) {
 48         alert("抱歉,攻城狮正在攻城!");
 49     }
 50 
 51 }
 52 //指定表格内的数据
 53 function Gettable(content) {
 54     try {
 55         var lRoot = new Object();
 56         var tabledata = new Array();
 57         var tables = content.find("tr");
 58         for (var i = 0; i < tables.length; i++) {
 59             var trDatas = new Object();
 60             var tdData = tables.eq(i).find('td').find('input,textarea,select');
 61             trDatas = CollectionInputData(tdData);
 62             if ($.isEmptyObject(trDatas)) continue;
 63             tabledata.push(trDatas);
 64         }
 65         lRoot["table"] = tabledata;
 66         return lRoot;
 67     } catch (e) {
 68         alert("抱歉,攻城狮正在攻城!");
 69     }
 70 }
 71 //收集指定容器内输入框的数据
 72 function CollectionInputData(content) {
 73     var root = new Object();
 74     try {
 75         for (var j = 0; j < content.length; j++) {
 76             var myobject = new Object();
 77             switch (content[j].type) {
 78             case "text":
 79             case "hidden":
 80             case "textarea":
 81             case "number":
 82                 if (content[j].value != "" && content[j].value != undefined) {
 83                     if (root[content[j].name]) {
 84                         myobject[content[j].name] = content[j].value;
 85                     } else {
 86                         root[content[j].name] = content[j].value;
 87                     }
 88                 }
 89                 break;
 90             case "radio":
 91             case "checkbox":
 92                 root[content[j].name] = content[j].checked ? 1 : 0;
 93                 break;
 94             case "select-one":
 95                 if (content[j].value != "" && content[j].value != undefined) {
 96                     root[content[j].name] = content[j].value;
 97                 } else {
 98                     root[content[j].name] = -1;
 99                 }
100                 break;
101             default:
102                 break;
103             }
104         }
105         return root;
106     } catch (error) {
107         alert("抱歉,攻城狮正在攻城!");
108     }
109 }
110 // 指定位置容器赋值
111 function Fill(content, json) {
112     for (var i = 0; i < content.length; i++) {
113         if (json[content[i].name]) {
114             switch (content[i].type) {
115             case "text":
116             case "hidden":
117             case "textarea":
118             case "number":
119                 content[i].value = json[content[i].name];
120                 break;
121             case "radio":
122             case "checkbox":
123                 content[i].checked = json[content[i].name];
124             case "select-one":
125                 content[i].value = json[content[i].name];
126                 break;
127             default:
128             }
129             //移除json中已经使用过的值
130             // delete json[content[i].name];
131         }
132     }
133 }
134 //填充表格数据
135 function FillTableData(content, json) {
136     var tables = content.find("tr");
137     var tdData;
138     switch (tables.length) {
139     case 0:
140         return;
141     default:
142         tdData = tables.eq(0).find('td').find('input,textarea');
143         if (tdData.length > 0) {
144             for (var i = 0; i < json.table.length - tables.length; i++) {
145                 trAdd();
146             }
147             //重新获取有几个tr
148             tables = content.find("tr");
149             for (var i = 0; i < json.table.length; i++) {
150                 //循环赋值
151                 tdData = tables.eq(i).find('td').find('input,textarea');
152                 Fill(tdData, json.table[i]);
153             }
154         } else {
155             if (json.table != "" && json.table != undefined) {
156                 for (var i = 0; i < json.table.length - (tables.length - 1) ; i++) {
157                     trAdd();
158                 }
159                 //重新获取有几个tr
160                 tables = content.find("tr");
161                 for (var i = 0; i < json.table.length; i++) {
162                     //循环赋值
163                     tdData = tables.eq(i + 1).find('td').find('input,textarea');
164                     Fill(tdData, json.table[i]);
165                 }
166             }
167         }
168         break;
169     }
170 }
171 //删除选中的数据
172 function delData(content) {
173     var id = "";
174     var arrselections = content.bootstrapTable('getSelections');
175     if (arrselections.length <= 0) {
176         alert("请选择有效数据!");
177         return id;
178     }
179    
180     for (var i = 0; i < arrselections.length; i++) {
181         id += arrselections[i].Id + ',';
182     }
183     id = id.substring(0, id.length - 1);
184     return id;
185 }
186 //增加表格行
187 function trAdd() {
188     var table = $("#tables");
189     var str = "<tr>";
190     if (table.find('tr').length > 1) {
191         str += table.find('tr').eq(1)[0].innerHTML;
192     } else {
193         str += table.find('tr').eq(0)[0].innerHTML;
194     }
195     str += "</tr>";
196     table.append(str);
197 }
198 //删除指定行
199 function trDelete(content) {
200     var td = $(content);
201     td.parents("tr").remove();
202 }
View Code

主题思想是通过name来对应收集赋值数据,以前是通过id,但是总感觉重复劳动比较多,就把它抽了出来。

一个json里面包含对象和数组的键值对。对象放在div 里面,数组是table 里面的数据。总体还是传递两个id,定位到要收集哪里的数据。

应该有许多的缺点,不过应付属于我自己的项目还是可以的,毕竟小项目(*^▽^*)。。。

 

posted @ 2018-07-23 13:57  隨興∥隨心  阅读(582)  评论(0)    收藏  举报