使用bootbox.js(二级务必提交书面和数字到数字中国)
页面文件
<#-- 页头 -->
<#assign currNav = "deposit">
<#assign title="网校充值">
<#include "/root/commons/header.ftl"> <div class="container"> <form id="depositForm" name="depositForm" role="form" action="/root/depositlog/${schoolId}/deposit" method="post">
<div class="form-group">
<label for="schoolId">网校ID</label>
<input type="text" class="form-control" id="schoolId" name="schoolId" placeholder="比如。udemy" value="${school.schoolId!''}" readonly="readonly">
<p class="help-block">全局唯一,不能和其它网校的ID同样</p>
</div>
<div class="form-group">
<label for="name">网校名称</label>
<input type="text" class="form-control" id="name" name="name" placeholder="请填写网校名称" value="${school.name!''}" readonly="readonly">
</div> <div class="form-group">
<label for="duration">充值分钟数 <span id="chinaText" class="text-muted text-sm" style="margin-left:60px;font-size:12px;"> </span></label>
<input type="number" class="form-control" id="duration" name="duration" placeholder="">
<p class="help-block">单位:分钟</p>
</div>
<div class="form-group">
<label for="amount">充值金额 <span id="moneyText" class="text-muted text-sm" style="margin-left:60px;font-size:12px;"> </span></label>
<input type="text" class="form-control" id="amount" name="amount" placeholder="">
<p class="help-block">单位:元</p>
</div>
<div class="form-group">
<label for="note">备注</label>
<input type="text" class="form-control" id="note" name="note" placeholder="">
</div> </form> <button id="submitBtn" class="btn btn-primary">提交充值数据</button> </div> <!-- /container --> <#-- 页脚開始 -->
<#include "/root/commons/footerBegin.ftl"> <script src="/resources/js/bootbox.js"></script> <script>
//在输入框内容变化的时候触发change
$("#duration").on('input',function(e){
var value=$("#duration").val(); $.get("/root/depositlog/input/change",{number:value},function(data){
$("#chinaText").text(data+" 分钟");
});
}); $("#amount").on('input',function(e){
var value=$("#amount").val(); $.get("/root/depositlog/input/change",{number:value},function(data){
$("#moneyText").text(data+" 元");
});
}); $("#submitBtn").click(function(){
var schoolId=$("#schoolId").val();
var name=$("#name").val();
var duration=$("#duration").val();
var amount=$("#amount").val(); bootbox.dialog({
message: "<div id='schoolName'>网校名称:<span>"+name+"</span><span style='margin-left:10px'>schoolId-("+schoolId+")</span></div>"+
"<div>充值时长:<span>"+duration+" 分钟</span></div>"+
"<div>充值金额:<span>"+amount+" 元</span></div>",
title: "充值确认",
buttons: {
success: {
label: "确定",
className: "btn-success",
callback: function() {
document.depositForm.submit();
}
},
danger: {
label: "取消",
className: "btn-danger",
callback: function() {
return;
}
}
}
}); });
</script> <#-- 页脚结束 -->
<#include "/root/commons/footerEnd.ftl">
推断仅仅有是数字字符串才发送
$("#duration").on('input',function(e){
var value=$("#duration").val();
//alert($.isNumeric(value));
if($.isNumeric(value)){
$("#mistakeText").html("");
$.get("/springmvc/input/change",{number:value},function(data){
$("#chinaText").html(data+"分钟");
});
}else{
$("#mistakeText").html("请输入数字!");
}
});
Java类文件
package com.school.web.controller.root; import java.math.BigDecimal;
import java.nio.charset.Charset;
import java.util.Date;
import java.util.List; import javax.servlet.http.HttpServletRequest; import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.ServletRequestUtils;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView; import com.school.business.DepositLogManager;
import com.school.business.SchoolManager;
import com.school.domain.DepositLog;
import com.school.domain.Root;
import com.school.domain.School;
import com.school.stereotype.YesNoStatus;
import com.school.util.Constants; /**
* 充值管理的控制器。
*/
@Controller("rootDepositManagementController")
@RequestMapping("/root/depositlog")
public class DepositManagementController extends AbstractRootController { private static final Logger LOG = LoggerFactory.getLogger(DepositManagementController.class); @Autowired
private SchoolManager schoolManager; @Autowired
private DepositLogManager depositLogManager; /**
* 充值表单。
*/
@RequestMapping(value = "/{schoolId}/deposit", method = RequestMethod.GET)
public ModelAndView depositForm(@PathVariable String schoolId, HttpServletRequest request) { // 网校信息
School school = schoolManager.getSchool(schoolId); ModelAndView mav = this.createModelAndView(request);
mav.setViewName("root/depositLog/deposit");
mav.addObject("schoolId", schoolId);
mav.addObject("school", school);
return mav;
} /**
* 处理充值。
*/
@RequestMapping(value = "/{schoolId}/deposit", method = RequestMethod.POST)
public @ResponseBody String depositPost(@PathVariable String schoolId, HttpServletRequest request) { int duration = ServletRequestUtils.getIntParameter(request, "duration", 0);// 时长分钟数。单位:分钟
double amount = ServletRequestUtils.getDoubleParameter(request, "amount", 0);// 价格
String tradingNote = ServletRequestUtils.getStringParameter(request, "note", null); // 备注 if (duration <= 0) {
return "invalid duration";
} if (amount < 0) {
return "invalid amount";
} // 当前管理员信息
Root root = (Root) (request.getSession().getAttribute(Constants.ROOT_SESSION_NAME)); // 交易名称
String tradingName = schoolId + "充值" + duration + "。费用:" + amount + "元"; // 充值信息
DepositLog depositLog = new DepositLog();
depositLog.setSchoolId(schoolId);
depositLog.setTradingName(tradingName);
depositLog.setTradingNote(tradingNote);
depositLog.setDuration(duration);
depositLog.setAmount(BigDecimal.valueOf(amount));
depositLog.setOperator(root.getNickname());
depositLog.setStatus(YesNoStatus.YES.getValue());
depositLog.setDateAdded(new Date());
depositLog.setLastModified(new Date()); int rows = depositLogManager.addDepositLog(depositLog);
LOG.info(tradingName + "。处理结果:" + rows); return "success";
} /**
* 查看近期100条充值记录。
*/
@RequestMapping("/list")
public ModelAndView depositLogs(HttpServletRequest request) {
// 查询充值记录
List<DepositLog> depositLogs = depositLogManager.getDepositLogs(); ModelAndView mav = this.createModelAndView(request);
mav.setViewName("root/depositLog/list");
mav.addObject("depositLogs", depositLogs);
return mav;
} /**
* 将数字转换成中文数字
* @author Prosper
* @throws UnsupportedEncodingException
*/
@RequestMapping(value="/input/change", method = {RequestMethod.POST,RequestMethod.GET})
public ResponseEntity<String> getCNint(HttpServletRequest request){
HttpHeaders headers = new HttpHeaders();
MediaType mediaType = new MediaType("text", "plain", Charset.forName("UTF-8"));
//MediaType mediaType = new MediaType("application", "json", Charset.forName("UTF-8"));
headers.setContentType(mediaType);
//HttpStatus Yes=HttpStatus.OK; String str = request.getParameter("number"); if("".equals(str) && str==null){
return new ResponseEntity<String>("no", headers, HttpStatus.OK);
}else{
Integer number = Integer.parseInt(str);
String ri=intToZH(number);
return new ResponseEntity<String>(ri, headers, HttpStatus.OK);
} } public String intToZH(int i){
String[] zh = {"零", "一", "二", "三", "四", "五", "六", "七", "八", "九"};
String[] unit = {"", "十", "百", "千", "万", "十", "百", "千", "亿", "十"}; String str = "";
StringBuffer sb = new StringBuffer(String.valueOf(i));
sb = sb.reverse();
int r = 0;
int l = 0;
for (int j = 0; j < sb.length(); j++)
{
/**
* 当前数字
*/
r = Integer.valueOf(sb.substring(j, j+1)); if (j != 0)
/**
* 上一个数字
*/
l = Integer.valueOf(sb.substring(j-1, j)); if (j == 0)
{
if (r != 0 || sb.length() == 1)
str = zh[r];
continue;
} if (j == 1 || j == 2 || j == 3 || j == 5 || j == 6 || j == 7 || j == 9)
{
if (r != 0)
str = zh[r] + unit[j] + str;
else if (l != 0)
str = zh[r] + str;
continue;
} if (j == 4 || j == 8)
{
str = unit[j] + str;
if ((l != 0 && r == 0) || r != 0)
str = zh[r] + str;
continue;
}
}
return str;
} }
版权声明:本文博客原创文章。博客,未经同意,不得转载。
使用bootbox.js(二级务必提交书面和数字到数字中国)的更多相关文章
- bootbox.js
bootbox:一个弹出框插件,官网看一下例子就好了:http://bootboxjs.com/examples.html 目前来说应该只要调用bootbox.js就可以了,没有css的问题 1.有最 ...
- 弹出框二 之 bootbox.js
1.可以通过Nuget下载 2.引入 jquery bootstrap bootbox.js 3.使用 $(function () { //bootbox.alert("确认删除" ...
- js ajax post提交 ie和火狐、谷歌提交的编码不一致,导致中文乱码
今天遇到一个问题找了很久发现: 使用js ajax post提交 ie和火狐.谷歌提交的编码不一致,导致中文乱码 //http://www.cnblogs.com/QGC88 $.ajax({ url ...
- bootbox.js [v4.2.0]设置确认框 按钮语言为中文
Bootbox.js (http://bootboxjs.com/)是一个小型的 JavaScript 库用来创建简单的可编程对话框,基于 Twitter 的 Bootstrap 开发. 弹出确认框方 ...
- js循环POST提交添加辅助单位
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...
- 下拉的DIV+CSS+JS二级树型菜单
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- bootbox.js官方文档
简介 Bootbox.js是一个小型的JavaScript库,基于Bootstrap模态框开发,用于创建可编程的对话框. 不像原生的alert等对话框,所有的Bootstrap模态框生成的都是非阻塞事 ...
- JS实现异步提交
什么是XMLHttpRequest? XMLHttpRequest对象用于在后台与服务器交换数据 XMLHttpRequst的作用 在不重新加载页面的情况下更新网页 在页面已加载后从服务器请求数据 在 ...
- bootbox.js官方文档中文版
bootbox.js官方文档中文版简介:Bootbox.js是一个小型的JavaScript库,基于Bootstrap模态框开发,用于创建可编程的对话框. 不像原生的alert等对话框,所有的Boot ...
随机推荐
- no copy constructor available or copy constructor is declared 'explicit'
今天新写了一个类.然后对这个类使用STL中的vector,碰到错误: no copy constructor available or copy constructor is declared 'ex ...
- Android设备管理器漏洞2--禁止用户取消激活设备管理器
2013年6月,俄罗斯安全厂商卡巴斯基发现了史上最强手机木马-Obad.A.该木马利用了一个未知的Android设备管理器漏洞(ANDROID-9067882),已激活设备管理器权限的手机木马利用该漏 ...
- hdu 4739【位运算】.cpp
题意: 给出n个地雷所在位置,正好能够组成正方形的地雷就可以拿走..为了简化题目,只考虑平行于横轴的正方形.. 问最多可以拿走多少个正方形.. 思路: 先找出可以组成正方形的地雷组合cnt个.. 然后 ...
- 关于Opencv2.4.x中stitcher类的简单应用
1.opencv2.4以上版本有stitcher类,可以简单方便的实现图像的拼接,目前只是简单的测试一下stitcher类的拼接功能,也是纠结了好长时间,最终发现是要在链接库中加上opencv_sti ...
- poj3468(线段树)
题目连接:http://poj.org/problem?id=3468 线段树功能:update:成段增减 query:区间求和. 分析:需要用到延迟标记(或者说懒惰标记),简单来说就是每次更新的时候 ...
- 代码重构 & 代码中的坏味道
1.重构 1.1 为什么要重构 1.1.1 改进程序设计 程序员为了快速完成任务,在没有完全理解整体架构之前就开始写代码, 导致程序逐渐失去自己的结构.重构则帮助重新组织代码,重新清晰的体现 程序结构 ...
- Knockout应用开发指南 第四章:模板绑定
原文:Knockout应用开发指南 第四章:模板绑定 模板绑定The template binding 目的 template绑定通过模板将数据render到页面.模板绑定对于构建嵌套结构的页面非常方 ...
- ServiceStack.Redis里List的Insert操作
最近用Redis的c#驱动,发现ServiceStack.Redis里List类型的Insert方法调用的时候始终报错,结果反编译dll后,这个方法居然是这样写的: public void Inser ...
- ACdream 之ACfun 题解
A - ACfun Time Limit: 2000/1000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others) SubmitSta ...
- UltraEdit-32 温馨提示:右协会,取消 bak文件
1.最近安装UltraEdit-32 无权协会,能够 高级 ->组态 ->文件关联 在 检查 继承到资源管理器 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkb ...