没有跟上时代的初学者,没有学习新的三大框架,要下定决心学习学习。
不过在使用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=" 100%" name="data1"/> 96 </td> 97 <td > 98 <input type="text" style=" 100%" name="data2" /> 99 </td> 100 <td> 101 <input type="text" style=" 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>

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 }
主题思想是通过name来对应收集赋值数据,以前是通过id,但是总感觉重复劳动比较多,就把它抽了出来。
一个json里面包含对象和数组的键值对。对象放在div 里面,数组是table 里面的数据。总体还是传递两个id,定位到要收集哪里的数据。
应该有许多的缺点,不过应付属于我自己的项目还是可以的,毕竟小项目(*^▽^*)。。。