JQuery+EasyUI轻松实现步骤条效果


Posted in Javascript onFebruary 22, 2016

EasyUI 简介

easyui是一种基于jQuery的用户界面插件集合。

easyui为创建现代化,互动,JavaScript应用程序,提供必要的功能。

使用easyui你不需要写很多代码,你只需要通过编写一些简单HTML标记,就可以定义用户界面。

easyui是个完美支持HTML5网页的完整框架。

easyui节省您网页开发的时间和规模。

easyui很简单但功能强大的。

jQuery EasyUI 提供易于使用的组件,它使 Web 开发人员能快速地在流行的 jQuery 核心和 HTML5 上建立程序页面 。

先给大家展示下效果图:

JQuery+EasyUI轻松实现步骤条效果

 项目需求:在我们平时购物的时候,经常是这样一个步骤,下订单,交货款,卖家发货,确认收货,评价。那么如果UI设计上一个进度条,这样用户就可以很清楚的看到自己在哪个位置,需要进行哪些步骤了。

再来看看我们项目的前台框架,采用的是EasyUI+MVC,我只需要去写几个JS和view进行互动就OK了,我用了一天的时间来看它整个页面是怎么实现的,基本就是引用一个easyUI的样式,用AJAX进行传值,调用后台的controller中的方法。既然我实现的是一个前台页面的动态效果,就在上一步和下一步上写JQuery方法进行switch选择进行节点的激活和完成。写一个JS的方法来选择控制主体页面的显示和隐藏,我把view写成了几个div,所以我的方法就是几个div显示的跳转。

回顾JQuery的知识点:

 1.窗体加载事件相应的是window.onload的方法

 2.按钮绑定事件有很多种

1)用JS,写一个function放在按钮的onclick的事件上。

2)用JQuery绑定一个匿名函数 $('#btnnext').bind('click', function (){});

 3.增加类和删除类 removeclass和addclass,其中ID和class的区别,在JQuery中ID有#开头

 4.js和JQuery的区别在于,后者用最少的代码表达了最多的意思,后者是前者了更高一层的封装。

 5.AJAX后台传递方法的类型区别 POST和GET,get相对传输的数据量小,通过URL请求来传递用户的传输,post需要提交表单,安全度高。

部分代码展示:

//点击下一步按钮+进度条前进一个的效果
$('#btnnext').bind('click', function () { 
//判断各个输入框是否验证通过 
if (InputValidate() == false) { 
return; 
} 
//根据当前标题,决定下一步是什么 
var currentTitle = $('#MainContent').panel('options').title; 
if (currentTitle == '填写项目信息') { 
//点击下一步响应滚动条 
$("#li1").removeClass("ui-step-active"); //将活动节点移除 
$("#li1").addClass("ui-step-done"); //增加一个完成的节点 
$("#li2").removeClass("ui-step-line"); //移除一个线 
$("#li2").addClass("ui-step-active"); //增加一个活跃着的节点 
$('#NewFile').hide();//制作按钮隐藏 
$('#BidInfo').hide();//基本信息隐藏 
$.get('/InviteBid/GetInviteBidId', { bidType: bidType }, function (data, status) { 
//在招标项目编号文本框中赋值 
$('#InviteBidId').val(data); 
$('#InfoDisplay').show(); 
}); 
$('#btnback').show(); 
ControlContent("#InfoDisplay"); 
//$('#btnArea').show(); 
//更改标题 
$('#MainContent').panel({ 
title: '生成招标编号' 
}); 
} 
//如果当前位置为填写项目信息,点击下一步时提交项目基本信息 
if (currentTitle == '生成招标编号') { 
//获得项目基本信息 
var BidProId = $('#InviteBidId').val(); //获得招标编号 
var BidProName = $('#BidProName').val();//获得招标项目名称 
var PurchaseUnit = $('#PurchaseUnit').val();//获得采购单位 
InviteBidTypeId = $('#comboInviteBidType').combobox('getValue');//获得招标方式Id 
ItemTypeId = $('#comboItemType').combobox('getValue'); //获得品目类型Id 
var PurchaseAgency = $('#PurchaseAgency').val();//获得采购代理 
var BidOpenTime = $('#BidOpenTime').datebox('getText');//开标时间 
var BidGuaranteCash = $('#BidGuaranteCash').val();//投标保证金 
var SaleStartDate = $('#SaleStartDate').datebox('getText');//获得招标文件发售起始时间 
var SaleEndDate = $('#SaleEndDate').datebox('getText');//获得招标文件发售终止时间 
//点击下一步响应滚动条 
$("#li2").removeClass("ui-step-active"); //将活动节点移除 
$("#li2").addClass("ui-step-done"); //增加一个完成的节点 
$("#li3").removeClass("ui-step-line"); //移除一个线 
$("#li3").addClass("ui-step-active"); //增加一个活跃着的节点 
$("#btnback").show(); 
ControlContent("#EvaluationBid"); 
//提交项目信息数据到Controller 
$.ajax({ 
type: 'POST', 
url: '/InviteBid/AddBidZRecord', 
contentType: 'application/json', //必须有,表示提交的数据类型 
data: JSON.stringify({ 
'BidZRecorder': 
[{ 'BidProjectId': BidProId, 'BidRecordName': BidProName, 'PurchaseUnit': PurchaseUnit, 'PurchaseAgency': PurchaseAgency, 'SaleStartDate': SaleStartDate, 'SaleEndDate': SaleEndDate, 'BidOpenTime': BidOpenTime, 'BidGuaranteCash': BidGuaranteCash, 'ItemId': ItemTypeId, 'InviteBidId': InviteBidTypeId }] 
}), 
success: function (jsonResult) { 
$('#InfoDisplay').hide();//编号信息隐藏 
$('#EvaluationBid').show();//评标方法区域显示 
//主内容区域标题改为设置评标办法 
$('#MainContent').panel({ 
title: '设置评标办法' 
}); 
//评标办法的第一步的文字字体设为红色 
$('#firstStep').css({ color: 'red' }) 
}, 
error: function (data) { 
$.messager.alert('提示', '填写项目信息失败!', 'warning'); 
return; 
} 
}); 
} 
else if (currentTitle == '设置评标办法') { 
if ($('#comboEvaluationMethod').combobox('getText') == '') { 
return false; 
} 
if (saveFlag == false) { 
return; 
} 
//获得评标办法的Id 
var BidRecordId = $('#InviteBidId').val(); //获得招标编号 
//点击下一步响应滚动条 
$("#li3").removeClass("ui-step-active"); //将活动节点移除 
$("#li3").addClass("ui-step-done"); //增加一个完成的节点 
$("#li4").removeClass("ui-step-line"); //移除一个线 
$("#li4").addClass("ui-step-active"); //增加一个活跃着的节点 
$("#btnback").show(); 
ControlContent('#FinishFile'); 
//提交评标办法 
$.ajax({ 
type: 'POST', 
url: '/InviteBid/UpdateBidZRecord/?JudgeBidId=' + JudgeBidId + '&BidRecordId=' + BidRecordId, 
//data: JudgeBidId, 
success: function (jsonResult) { 
}, 
error: function (data) { 
$.messager.alert('提示', '评标办法提交失败!', 'warning'); 
return; 
} 
}); 
//提交修改分值后的表格中的内容 
//获得表格中的所有行 
var allRows = $('#tg').treegrid('getRoots'); 
//获得行数 
var rowsCount = allRows.length; 
//声明一个数组 
var arrayJudgeItems = []; 
//循环遍历所有行,把每一行的记录作为一个对象存到数组中 
for (i = 0; i < rowsCount; i++) { 
//获得第i行记录 
var Row = allRows[i]; 
var rowIndex = $('#tg').treegrid('getRowIndex', Row) + 2; 
//实例化一个评分项目对象 
var BidJudgeTable = { 
RowIndex: rowIndex, 
JudgeItemName: Row.JudgeItemName, 
JudgeItemContent: Row.JudgeItemContent, 
Score: Row.Score 
}; 
//在数组中添加对象 
arrayJudgeItems.push(BidJudgeTable); 
} 
//提交数据 
$.ajax({ 
type: 'POST', 
async: false, 
url: '/InviteBid/ReceiveBidJudgeTable', 
contentType: 'application/json', //必须有,表示提交的数据类型 
data: JSON.stringify(arrayJudgeItems), 
success: function (result) { 
//alert("success"); 
}, 
error: function (data) { 
//alert("error"); 
} 
}); 
$('#EvaluationBid').hide(); 
$('#btnnext').hide(); 
$('#FinishFile').show(); 
$('#MainContent').panel({ 
title: '生成招标文件' 
}); 
} 
else if (currentTitle == '生成招标文件') { 
} 
}); 
/* 
*用来控制上一页和下一页的页面转换---周洲---2015年11月15日 
*summary:控制主体页面的显示和隐藏 
*param: 参数showid:要显示的页面的div的id,如"#BidInfo" 
*/ 
function ControlContent(showid) { 
//主体内容页面的id数组 
var stepContents = new Array("#BidInfo", "#InfoDisplay", "#EvaluationBid", "#FinishFile"); 
//循环遍历数组中的div的id值,如果为当前步骤,则将页面内容设为显示,其余设为隐藏 
var contentIndex;//数组中元素的索引值 
for (contentIndex in stepContents) { 
var stepContent = stepContents[contentIndex];//获得元素的值 
if (showid == stepContent) { 
$(stepContent).show();//显示 
} 
else { 
$(stepContent).hide();//隐藏 
} 
} 
} 
//点击上一步按钮+进度条效果---周洲--2015年11月15日 
$("#btnback").bind("click", function () { 
//根据当前标题,决定上一步是什么 
var currentTitle = $('#MainContent').panel('options').title; 
switch (currentTitle) { 
case "生成招标编号": 
$("#li2").removeClass("ui-step-active"); 
$("#li2").addClass("ui-step-line"); 
$("#li1").removeClass("ui-step-done"); 
$("#li1").addClass("ui-step-active"); 
$("#currentTitle").text("填写项目信息"); 
ControlContent('#BidInfo'); 
$("#btnback").hide(); 
$('#btnnext').show(); 
$('#MainContent').panel({ 
title: '填写项目信息' 
}); 
break; 
case "设置评标方法": 
$("#li3").removeClass("ui-step-active"); 
$("#li3").addClass("ui-step-line"); 
$("#li2").removeClass("ui-step-done"); 
$("#li2").addClass("ui-step-active"); 
$("#currentTitle").text("生成招标编号"); 
ControlContent('#InfoDisplay'); 
$('#btnnext').show(); 
$('#MainContent').panel({ 
title: '生成招标编号' 
}); 
break; 
case "生成招标文件": 
$("#li4").removeClass("ui-step-active"); 
$("#li4").addClass("ui-step-line"); 
$("#li3").removeClass("ui-step-done"); 
$("#li3").addClass("ui-step-active"); 
$("#currentTitle").text("设置评标方法"); 
ControlContent('#EvaluationBid'); 
$('#btnnext').show(); 
$('#MainContent').panel({ 
title: '设置评标方法' 
}); 
break; 
default: 
} 
});

视图部分我只展示进度条:

@*步骤条*@ 
<div class="row" style="margin-top:3%"> 
<div class="col-md-2" ></div> 
@* 步骤条所在区域*@ 
<div class="col-md-8"> 
@*步骤条*@ 
<ol class="ui-step ui-step-4"> 
<li id="li1" class="ui-step-start ui-step-active" > 
<div class="ui-step-line">-</div> 
<div id="d1" class="ui-step-icon"> 
<i class="iconfont"></i> 
<i class="ui-step-number">1</i> 
<span class="ui-step-text">填写项目信息</span> 
</div> 
</li> 
<li id="li2" class="ui-step-line"> 
<div class="ui-step-line">-</div> 
<div class="ui-step-icon"> 
<i class="iconfont"></i> 
<i class="ui-step-number">2</i> 
<span class="ui-step-text">生成招标编号</span> 
</div> 
</li> 
<li id="li3" class="ui-step-line"> 
<div class="ui-step-line">-</div> 
<div class="ui-step-icon"> 
<i class="iconfont"></i> 
<i class="ui-step-number">3</i> 
<span class="ui-step-text">设置评标方法</span> 
</div> 
</li> 
<li id="li4" class="ui-step-end"> 
<div class="ui-step-line">-</div> 
<div class="ui-step-icon"> 
<i class="iconfont"></i> 
<i class="ui-step-number">4</i> 
<span class="ui-step-text">生成招标文件</span> 
</div> 
</li> 
</ol> 
</div> 
<div class="col-md-2"></div> 
</div>

添加进度条需要引用的css样式:

@*进度条需要引用的文件*@ 
@* AliceUI基础样式 *@ 
<link href="../../Content/base-master/src/base.css" rel="stylesheet" /> 
@* 步骤条样式 *@ 
<link href="../../Content/step-master/step.css" rel="stylesheet" /> 
@*AliceUI图标字体*@ 
<link href="../../Content/iconfont-master/index.css" rel="stylesheet" />

以上所述是小逼给大家介绍JQuery+EasyUI轻松实现步骤条效果,希望对大家有所帮助!

Javascript 相关文章推荐
Bootstrap登陆注册页面开发教程
Jul 12 Javascript
在Vue中使用echarts的实例代码(3种图)
Jul 10 Javascript
Hexo已经看腻了,来手把手教你使用VuePress搭建个人博客
Apr 26 Javascript
JS关于刷新页面的相关总结
May 09 Javascript
Layui组件Table绑定行点击事件和获取行数据的方法
Aug 19 Javascript
JavaScript实现随机点名器实例详解
May 07 Javascript
js之切换全屏和退出全屏实现代码实例
Sep 09 Javascript
JavaScript中的相等操作符使用详解
Dec 21 Javascript
微信小程序地图绘制线段并且测量(实例代码)
Jan 02 Javascript
ElementUI中el-tree节点的操作的实现
Feb 27 Javascript
解决vue项目中出现Invalid Host header的问题
Nov 17 Javascript
React forwardRef的使用方法及注意点
Jun 13 Javascript
全面解析Bootstrap布局组件应用
Feb 22 #Javascript
基于jQuery实现带动画效果超炫酷的弹出对话框(附源码下载)
Feb 22 #Javascript
JavaScript function函数种类详解
Feb 22 #Javascript
JavaScript+html5 canvas实现图片破碎重组动画特效
Feb 22 #Javascript
jQuery获取字符串中出现最多的数
Feb 22 #Javascript
jQuery基于muipicker实现仿ios时间选择
Feb 22 #Javascript
简单谈谈javascript中this的隐式绑定
Feb 22 #Javascript
You might like
用PHP控制用户的浏览器--ob*函数的使用说明
2007/03/16 PHP
关于PHP自动判断字符集并转码的详解
2013/06/26 PHP
PHP错误机制知识汇总
2016/03/24 PHP
PHP实现微信支付(jsapi支付)流程步骤详解
2018/03/15 PHP
javascript Split方法,indexOf方法、lastIndexOf 方法和substring 方法
2009/03/21 Javascript
ExtJS PropertyGrid中使用Combobox选择值问题
2010/06/13 Javascript
javascript模拟的Ping效果代码 (Web Ping)
2011/03/13 Javascript
js获取html文件的思路及示例
2013/09/17 Javascript
JavaScript弹出新窗口后向父窗口输出内容的方法
2015/04/06 Javascript
javascript实现画不相交的圆
2015/04/07 Javascript
使用javascript将时间转换成今天,昨天,前天等格式
2015/06/25 Javascript
JS动态增删表格行的方法
2016/03/03 Javascript
jQuery原理系列-常用Dom操作详解
2016/06/07 Javascript
jQuery Dialog 打开时自动聚焦的解决方法(两种方法)
2016/11/24 Javascript
vue2.0 自定义日期时间过滤器
2017/06/07 Javascript
Node.js简单入门前传
2017/08/21 Javascript
详解JavaScript中操作符和表达式
2018/09/12 Javascript
vue v-for直接循环数字实例
2019/11/07 Javascript
解决echarts echarts数据动态更新和dataZoom被重置问题
2020/07/20 Javascript
python动态监控日志内容的示例
2014/02/16 Python
python爬取NUS-WIDE数据库图片
2016/10/05 Python
python基于ID3思想的决策树
2018/01/03 Python
python 自动重连wifi windows的方法
2018/12/18 Python
Django中使用Whoosh进行全文检索的方法
2019/03/31 Python
解决 jupyter notebook 回车换两行问题
2020/04/15 Python
科沃斯机器人官网商城:Ecovacs
2016/08/29 全球购物
中学生自我评价范文
2014/02/08 职场文书
大学生社会实践评语
2014/04/25 职场文书
司法局火灾防控方案
2014/06/05 职场文书
户籍证明书标准模板
2014/09/10 职场文书
2014年技术工作总结范文
2014/11/20 职场文书
Pytorch distributed 多卡并行载入模型操作
2021/06/05 Python
怎么用Python识别手势数字
2021/06/07 Python
Windows环境下实现批量执行Sql文件
2021/10/05 SQL Server
详细介绍Java中的CyclicBarrier
2022/04/13 Java/Android
使用python将HTML转换为PDF pdfkit包(wkhtmltopdf) 的使用方法
2022/04/21 Python