form2js的使用(续BootstrapTable)

通过收集表单数据,并且转换为json格式,实现表格的查询。

引入插件:不要忘记引入jquery。

<script src="${ctx}/assets/plugins/form2js/form2js.js"></script>
<script src="${ctx}/assets/plugins/form2js/js2form.js"></script>

建立一个form表单,id为searchForm。品红色标注的name字段名是作为属性名传入后台的,必须与后台规定的字段保持一致。

<div id="searchForm">
   <div class="box-header with-border">
      <div class="form-group col-lg-2 col-md-3 col-sm-4 col-xs-6">
          <label for="orderNo">订单编号</label>           <input type="text" class="input-sm form-control" name="orderNo" placeholder="输入订单编号">
      </div>
      <div class="form-group col-lg-2 col-md-3 col-sm-4 col-xs-6">
          <label for="state">订单状态</label>
             <select name="state" class="input-sm form-control">
                 <option value="" selected="selected">全部</option>
                 <option value="0">未拆单</option>
                 <option value="1">已拆单</option>
             </select>
      </div>
      <div class="form-group col-lg-2 col-md-3 col-sm-4 col-xs-6">
          <label for=" initiator">发起人</label>           <input type="text" class="input-sm form-control" name="initiator" placeholder="输入发起人姓名">
      </div>
      <div class="form-group col-lg-2 col-md-4 col-sm-4 col-xs-12">
          <label for="startDate">发起时间</label>
          <div class="input-daterange input-group" id="date">
            <input type="text" class="input-sm form-control" name="createdDtm" />
            <span class="input-group-addon">至</span>             <input type="text" class="input-sm form-control" name="createdDtm" />
          </div>
      </div>
      <div class="form-group col-lg-2 col-md-3 col-sm-4 col-xs-6">
          <label for="type">类型</label>
          <select name="type" class="input-sm form-control">
              <option value="" selected="selected">全部</option>
              <option value="1">搬运</option>
              <option value="0">维修</option>
              <option value="1,0">维修、搬运</option>
          </select>
      </div>
      <div class="form-group col-lg-2 col-md-2 col-sm-2 col-xs-2">
          <label for="search"></label>
          <Button id="searchBtn" class="btn btn-sm btn-default">
          <i class="glyphicon glyphicon-search"></i>&nbsp;查询
          </Button>
      </div>
   </div>
 </div>

js代码:

var searchformData={}; //定义一个全局变量收集表单数据。$("#searchBtn").on("click", function() {
     searchformData = form2js($("#searchForm")[0]);//将收集到的表单数据使用form2js转换为json格式。
     console.log(searchformData);
     $("#table").bootstrapTable("refresh", { //BootstrapTable定义的方法,refresh。
           query: searchformData
     });
});

refresh方法:刷新远程服务器上的数据,设置{query:{k:v}}来通过这个请求查询参数。具体详见BootstrapTable文档

通过文档可以看出,这个查询参数(query param)是json数据格式,所以这就体现了form2js的用处。

使用form2js后收集的表单数据如下,是json格式,这样就能从服务器加载查询的那条记录。

--------------------------------------------------------------------------------------------------------------------------------------分割线-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

结合jquery写了原生js,可以达到类似的效果。

<div class="form-group">
     <div>
        <input type="text" class="searEle" name="nickname" value="" placeholder="姓名" />
        <input type="text" class="searEle" name="phone" value="" placeholder="手机号码" />
        <select name="sex" class="searEle">
            <option value="" selected="selected">全部</option>
            <option value="0">male</option>
            <option value="1">female</option>
        </select>
        <input id="searchcus" type="button" value="查询" />
     </div>
     <div>
        <table id="cusTable"></table>
     </div>
</div>

var a = [];//定义全局变量数组a和c。
  var c;

$("#searchcus").on("click", function() {
        a = []; //每次查询结束清空数组。
        search();
});
function search() {   //定义一个查询函数search
   var x = $(".searEle").serializeArray(); //jquery序列化表格元素,返回json数据结构数据,此方法返回的是json对象而不是json字符串
   for(i = 0; i < x.length; i++) {
      if(x[i].value != "") {
          var searchformData = JSON.parse(‘{‘ + ‘"‘ + x[i].name + ‘"‘ + ‘:‘ + ‘"‘ + x[i].value + ‘"‘ + ‘}‘);//将json字符串转换为json对象
          a.push(searchformData); //将json对象放入数组中。
      }
   }
   c = $.extend({}, a[0], a[1],a[2]);//用一个或多个其他对象来扩展一个对象,返回被扩展的对象。将a[0],a[1],a[2]的内容整合到{}中,                                       不足之处在于,数组长度为多少(searEle的个数),这里就需要手动添加多少。   $("#cusTable").bootstrapTable("refresh", {
           query: c
   });
}

变量 x:

变量c:和form2js中的searchformData一样,json数据格式。

时间: 2024-10-01 07:31:34

form2js的使用(续BootstrapTable)的相关文章

使用插件bootstrap-table实现表格记录的查询、分页、排序等处理

在业务系统开发中,对表格记录的查询.分页.排序等处理是非常常见的,在Web开发中,可以采用很多功能强大的插件来满足要求,且能极大的提高开发效率,本随笔介绍这个bootstrap-table是一款非常有名的开源表格插件,在很多项目中广泛的应用.Bootstrap-table插件提供了非常丰富的属性设置,可以实现查询.分页.排序.复选框.设置显示列.Card view视图.主从表显示.合并列.国际化处理等处理功能,而且该插件同时也提供了一些不错的扩展功能,如移动行.移动列位置等一些特殊的功能,插件可

HDU——1874畅通工程续(邻接矩阵弗洛伊德)

畅通工程续 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 41849    Accepted Submission(s): 15463 Problem Description 某省自从实行了很多年的畅通工程计划后,终于修建了很多路.不过路多了也不好,每次要从一个城镇到另一个城镇时,都有许多种道路方案可以选择,而某些方案要比另一些方案行走

胜利大逃亡(续)(状态压缩bfs)

胜利大逃亡(续) Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 7357    Accepted Submission(s): 2552 Problem Description Ignatius再次被魔王抓走了(搞不懂他咋这么讨魔王喜欢)……这次魔王汲取了上次的教训,把Ignatius关在一个n*m的地牢里,并在地牢的某些地方安装了带

KEY操作续

[KEY操作续] 1.UMP key 序列化给定 key ,并返回被序列化的值,使用 RESTORE 命令可以将这个值反序列化为 Redis 键. 序列化生成的值有以下几个特点: 它带有 64 位的校验和,用于检测错误, RESTORE 在进行反序列化之前会先检查校验和. 序列化的值不包括任何生存时间信息. 返回值: 如果 key 不存在,那么返回 nil . 否则,返回序列化之后的值. 2.FLUSHDB 清空当前数据库中的所有 key. 此命令从不失败. 3.DBSIZE 返回当前数据库的

C++ Primer 学习笔记_74_面向对象编程 --再谈文本查询示例[续/习题]

面向对象编程 --再谈文本查询示例[续/习题] //P522 习题15.41 //1 in TextQuery.h #ifndef TEXTQUERY_H_INCLUDED #define TEXTQUERY_H_INCLUDED #include <iostream> #include <fstream> #include <sstream> #include <vector> #include <set> #include <map&g

初始ASP.NET数据控件【续 ListView】

ListView控件   ListView控件可以用来显示数据,它还提供编辑,删除,插入,分页与排序等功能.ListView是GridView与DataList的融合体,它具有GridView控件编辑数据的功能同时还具有DataList控件的灵活布局的功能.ListView控件的分页功能需要通过DataPager控件来实现. ListView控件的模版 LayoutTemplate:标识定义控件的主要布局的根模版.包含一个占位符对象,如表行(tr),div,span元素.此元素将由ItemTem

iOS账号续费及证书更新流程

开发者账号会员快到期的时候,苹果会发送给开发者账号的注册邮箱一封邮件,提示用户账号快到期了,及时续费,一般是提前一个月提示用户续费.下面开始介绍续费流程; 1.登录开发者账号后,网页上面会有账号过期黄色提示;点击renew your membership ;会跳到支付页面;个人开发者账号是688RMB/年; 2.选择continue; 3.购买详情,选择continue,然后点击购买 4.使用visa 或者 万事达信用卡支付,填写好发票信息就ok了,需要纸质发票的选择纸质发票;购买完后,苹果会发

Python学习笔记八:文件操作(续),文件编码与解码,函数,递归,函数式编程介绍,高阶函数

文件操作(续) 获得文件句柄位置,f.tell(),从0开始,按字符数计数 f.read(5),读取5个字符 返回文件句柄到某位置,f.seek(0) 文件在编辑过程中改变编码,f.detech() 获取文件编码,f.encoding() 获取文件在内存中的编号,f.fileno() 获取文件终端类型(tty.打印机等),f.isatty() 获取文件名,f.name() 判断文件句柄是否可移动(tty等不可移动),f.seekable() 判断文件是否可读,f.readable() 判断文件是

扩展BootstrapTable的treegrid功能

扩展BootstrapTable的treegrid功能 阅读目录 一.效果预览 二.代码示例 三.组件需要完善的地方 四.总结 正文 前言:上篇  JS组件系列--自己动手封装bootstrap-treegrid组件 博主自己动手封装了下treegrid的功能,但毕竟那个组件只是一个单独针对树形表格做的,适用性还比较有限.关注博主的园友应该知道,博主的博客里面写了很多bootstrapTable的扩展,今天打算在直接在bootstrapTable的基础上扩展一个treegrid的功能,很多长期关