zoukankan      html  css  js  c++  java
  • 简单的封装在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=" 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>
    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,定位到要收集哪里的数据。

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

  • 相关阅读:
    测试代码运行效率
    用宏实现的单例模式
    上传控件的按钮改为图片
    ODAC的使用笔记
    ASP.NET防止重复提交
    向SharePoint图片库添加Item
    获取页面上用户控件的子控件ID
    SharePoint的WebService的应用
    GridView中HyperLinkField的链接使用JavaScript问题
    C#日期验证的正则表达式
  • 原文地址:https://www.cnblogs.com/CnnBlog/p/9354299.html
Copyright © 2011-2022 走看看