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> 查询
</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数据格式。

form2js的使用(续BootstrapTable)的更多相关文章
- .Net Core MVC 网站开发(Ninesky) 2.3、项目架构调整(续)-使用配置文件动态注入
上次实现了依赖注入,但是web项目必须要引用业务逻辑层和数据存储层的实现,项目解耦并不完全:另一方面,要同时注入业务逻辑层和数据访问层,注入的服务直接写在Startup中显得非常臃肿.理想的方式是,w ...
- [.NET] C# 知识回顾 - 委托 delegate (续)
C# 知识回顾 - 委托 delegate (续) [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/6046171.html 序 上篇<C# 知识回 ...
- iOS 开发者账号到期续费流程
1.登录developer.apple.com,查看到期时间 2.到期提醒通知,点击Renew Membership续费(一般提前一个月提醒续费) 3.个人开发者账号续费需要支付 688人民币/年(9 ...
- JS组件系列——BootstrapTable+KnockoutJS实现增删改查解决方案(一)
前言:出于某种原因,需要学习下Knockout.js,这个组件很早前听说过,但一直没尝试使用,这两天学习了下,觉得它真心不错,双向绑定的机制简直太爽了.今天打算结合bootstrapTable和Kno ...
- JS组件系列——BootstrapTable 行内编辑解决方案:x-editable
前言:之前介绍bootstrapTable组件的时候有提到它的行内编辑功能,只不过为了展示功能,将此一笔带过了,罪过罪过!最近项目里面还是打算将行内编辑用起来,于是再次研究了下x-editable组件 ...
- JS组件系列——BootstrapTable+KnockoutJS实现增删改查解决方案(四):自定义T4模板快速生成页面
前言:上篇介绍了下ko增删改查的封装,确实节省了大量的js代码.博主是一个喜欢偷懒的人,总觉得这些基础的增删改查效果能不能通过一个什么工具直接生成页面效果,啥代码都不用写了,那该多爽.于是研究了下T4 ...
- JS组件系列——BootstrapTable+KnockoutJS实现增删改查解决方案(三):两个Viewmodel搞定增删改查
前言:之前博主分享过knockoutJS和BootstrapTable的一些基础用法,都是写基础应用,根本谈不上封装,仅仅是避免了html控件的取值和赋值,远远没有将MVVM的精妙展现出来.最近项目打 ...
- 微信公众号开发系列教程一(调试环境部署续:vs远程调试)
http://www.cnblogs.com/zskbll/p/4080328.html 目录 C#微信公众号开发系列教程一(调试环境部署) C#微信公众号开发系列教程一(调试环境部署续:vs远程调试 ...
- 我的bootstrapTable的应用
$(function () { //$('#table').attr("data-url", "/conference/" + location.href.sp ...
随机推荐
- js的各种错误类型
1.SyntaxError(语法错误) 解析代码时发生的语法错误 eg:var 1a; Uncaught SyntaxError: Unexpected number 2.ReferenceError ...
- 转 Oracle DBCA高级玩法:从模板选择、脚本调用到多租户
但凡是学过Oracle的同学,对DBCA(Database Configuration Assistant, DBCA)都不会陌生,有了这个工具,使得创建数据库成为可能.而DBCA本身有图形和静默两种 ...
- php五种常用的设计模式
php 设计模式 1.单例模式 单例模式顾名思义,就是只有一个实例.作为对象的创建模式, 单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例. 单例模式的要点有三个: 一是某个类 ...
- POJ 1182 食物链 经典并查集+关系向量简单介绍
题目: 动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形.A吃B, B吃C,C吃A. 现有N个动物,以1-N编号.每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种. 有 ...
- iOS 2.0 版本切入点
转载自:http://www.infoq.com/cn/articles/Version_2_0 移动互联网如火如荼,iOS 应用+ Android 应用+ 手机站似乎成了所有互联网公司的标配,你的网 ...
- 初识Jmeter(一)
倒霉熊的推荐: 文本学习网址:http://m.open-open.com/m/doc/category/105 视频学习网址: 软件学习网:http://www.ask3.cn/index.html ...
- HDU 5323 DFS
DFS Time Limit : 5000/2000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Submissio ...
- vim(ubuntu) 设置行号和缩进
在终端 输入以下命令来编辑vimrc配置文件: sudo vim /etc/vim/vimrc 或者 sudo gedit /etc/vim/vimrc 1.显示行号 在文件末端添加一新行,输入 se ...
- [学习opencv]高斯、中值、均值、双边滤波
http://www.cnblogs.com/tiandsp/archive/2013/04/20/3031862.html [学习opencv]高斯.中值.均值.双边滤波 四种经典滤波算法,在ope ...
- USB的八个问题和答案(转)
http://www.amobbs.com/thread-901041-1-1.html 问题一:USB的传输线结构是如何的呢? 答案一:一条USB的传输线分别由地线.电源线.D+.D-四条线构成,D ...