iframe做上传和读取数据
来源:互联网 发布:java api手机版 编辑:程序博客网 时间:2024/06/10 23:40
jsp页面
<%@page contentType="text/html; charset=utf-8"%>
<%@ include file="/WEB-INF/jsp/include.jsp" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>固定资产管理</title>
<meta http-equiv="pragma" content="no-cache" />
<meta http-equiv="keywords" content="" />
<meta http-equiv="description" content="" />
<link href="${ctx}/css/main.css" rel="stylesheet" type="text/css" />
<link href="${ctx}/js/jscalendar/skins/aqua/theme.css" rel="stylesheet" type="text/css" />
<link rel="stylesheet" type="text/css" href="${ctx}/js/easyui/themes/default/easyui.css"/>
<link rel="stylesheet" type="text/css" href="${ctx}/js/easyui/themes/icon.css"/>
<script type="text/javascript" src="${ctx}/js/jquery-1.4.2.js"></script>
<script type="text/javascript" src="${ctx}/js/jquery.validate.js"></script>
<script type="text/javascript" src="${ctx}/js/jquery.metadata.js"></script>
<script type="text/javascript" src="${ctx}/js/easyui/jquery.easyui.min.js"></script>
<script type="text/javascript" src="${ctx}/js/jscalendar/calendar.js"></script>
<script type="text/javascript" src="${ctx}/js/jscalendar/lang/cn_utf8.js"></script>
<script type="text/javascript" src="${ctx}/js/jscalendar/calendar-setup.js"></script>
<script type="text/javascript" src="${ctx}/js/common.js"></script>
<script type="text/javascript" src="${ctx}/js/json2.js"></script>
<script type="text/javascript">
$(function(){
$('#sub').removeAttr('disabled');
$('#subSms').removeAttr('disabled');
$.validator.setDefaults({
submitHandler: function(form) {
if (checkWealthCode()) {
if (checkEntryDate()) {
$('#sub').attr('disabled','disabled');
form.submit();
}
}
},
meta: "validate",
ignoreTitle: true//解决与google Toolbar的冲突
});
Calendar.setup(
{
inputField : "entryDate", // ID of the input field
ifFormat : "%Y-%m-%d", // the date format
button : "entryDateTrigger", // ID of the button
showsTime : true,
date : Calendar.initNewDate(),
timeFormat : "24"
}
);
jQuery.validator.addMethod("isMoney", function(value, element) {
var money = /^(([1-9]{1}\d*)|([0]{1}))(\.(\d){1,2})?$/;
return this.optional(element) || (money.test(value));
}, "请正确填写金额");
$("#theform").validate({
rules:{
"wealth.name":{
required:true,
maxlength:100
},
"wealth.code":{
maxlength:60
},
"wealth.factory":{
maxlength:100
},
"wealth.model":{
maxlength:60
},
"wealth.price":{
required:true,
isMoney:true,
range:[0.01,10000000]
},
"wealth.count":{
required:true,
digits:true,
range:[1,100]
},
"wealth.totalPrice":{
required:true,
isMoney:true
},
"wealth.totalPrice":{
required:true,
isMoney:true,
range:[1,10000000]
}
},
messages:{
"wealth.name":{
required:"名称不能为空",
maxlength:"名称请限制在50个汉字以内"
},
"wealth.code":{
maxlength:"货证号请限制在30个汉字以内"
},
"wealth.factory":{
maxlength:"货证号请限制在50个汉字以内"
},
"wealth.model":{
maxlength:"规格型号请限制在60个字符以内"
},
"wealth.price":{
required: "原值不能为空",
isMoney:"原值必须为金额形式",
range:"原值范围为0.01-10000000"
},
"wealth.count":{
required:"数量不能为空",
digits:"数量必须是整数",
range:"数量必须是0-100整数"
},
"wealth.totalPrice":{
required:"总价不能为空",
isMoney:"总价必须为金额形式",
range:"原值范围为0.01-10000000"
}
},
ignore: ".ignore"
});
$('#price').blur(function(){
countTotalPrice();
});
$('#wealthCount').blur(function(){
countTotalPrice();
});
});
function countTotalPrice () {
var price = $('#price').val();
var count = $('#wealthCount').val();
if (checkMoney(price) && isInteger(count) && count > 0) {
var totalPrice = parseFloat(price, 10) * parseInt(count, 10);
totalPrice = Math.round(totalPrice * 100) / 100;
$('#totalPrice').val(totalPrice);
}
}
function checkMoney (val) {
var money = /^(([1-9]{1}\d*)|([0]{1}))(\.(\d){1,2})?$/;
if (val && money.test(val)){
return true;
}
return false;
}
//画编号列表
function drawWealthCodeList() {
var codeNum = $('#wealthCount').val();
var exsitNum = parseInt($('.wealthCodeClass').size(),10);
//必须为小于100数字
if (codeNum && isInteger(codeNum) && parseInt(codeNum,10) <= 100) {
var str = '';
if (exsitNum <= codeNum) {
for (var i=exsitNum;i<codeNum;i++) {
str += addWealthCode(i);
}
if (str) {
$('#wealthCodeTable').append(str);
}
} else {
codeNum = parseInt(codeNum,10);
for (var i=exsitNum;i>codeNum;i--) {
delWealthCode(i);
}
}
}
}
//增加每一行编号
function addWealthCode(i) {
var line = '<tr id="wealthCodeTr'+(i+1)+'"><td >' + (i+1) + '</td>' + '<td><input type="text" class="wealthCodeClass" name="wealthCodeNameList['+i+']" id="wealthCode'+i+'" /></td><td><input type="text" class="wealthSnClass" name="wealthSnList['+i+']" id="wealthSn'+i+'" /></td><td><select class="wealthUsableClass" name="wealthUsableList['+i+']" onchange="changeTotalUsable();" ><s:iterator value="YesNoStatuses" ><option value="${value}" <c:if test="${1 == value }">selected="selected"</c:if>>${name}</option></s:iterator></select></td><td>未分配</td>' +'</tr>';
return line;
}
//删除一行编号
function delWealthCode(i) {
$('#wealthCodeTr' + i).remove();
}
//增加code校验
function checkWealthCode() {
var flag = true;
$('.wealthCodeClass').each(function(){
var val = $(this).val();
if (!val) {
alert('请输入编号');
flag = false;
return false;
}
});
if (flag) {
var codeNum = $('#wealthCount').val();
var exsitNum = $('.wealthCodeClass').size();
if (parseInt(codeNum,10) != parseInt(exsitNum,10)) {
alert('固定资产数量与编号数量不一致');
flag = false;
}
$('.wealthSnClass').each(function(){
var snNum = $(this).val();
if (!snNum) {
alert('请输入sn码');
flag = false;
return;
}
});
}
return flag;
}
//校验入库时间
function checkEntryDate() {
var flag = true;
var entryDate = $('#entryDate').val(); //获取入库时间
entryDate = entryDate.replace(/\_/g, "/");
var eDate = new Date(entryDate);
var currentTime = new Date();
var currentDate = new Date(currentTime);
if (entryDate != null && entryDate != "") {
if (currentDate.getTime() < eDate.getTime()) {
alert('您填写的入库时间不能大于当前时间,请重新选择入库时间!');
flag = false;
return;
}
}
return flag;
}
//把所有的单个产品的状态和总的状态保持一致
function changeUsableList() {
var usableValue = $("#usableValue").val();
var wealthUsableArray = $(".wealthUsableClass").length;
$('.wealthUsableClass').each(function(){
if (usableValue) {
$(this).val(usableValue);
}
});
}
//在总的状态为否的情况下,把总的状态和所有的单个产品的状态保持一致
function changeTotalUsable() {
var usableValue = $("#usableValue").val();
$(".wealthUsableClass").each(function(){
var currentValue = $(this).val();
if (usableValue == 0) {
if (currentValue == 1) {
alert("请选择正确的状态!");
$(this).val(usableValue);
return;
}
}
});
}
//上传文件
function uploadFile() {
if (!$("#excelFile").val()){
$("#msg").html("请选择excel文件");
} else {
$("#msg").html("");
$("#fileForm").submit();
}
}
function test() {
var jsonObject = document.getElementById("hidden_frame").contentWindow.document.body.innerHTML;
var dataObj = unescape(jsonObject.replace(/\\/g, "%"));
var jsonObj = JSON.parse(dataObj);
var jsonArray = jsonObj.data;
var jsonStrlen = jsonArray.length;
if (jsonStrlen > 0) {
$('#wealthCount').val(jsonStrlen);
drawWealthCodeList();
}
for (var i=0;i<jsonStrlen;i++) {
$("#wealthCode" + i).val(jsonArray[i].wealthCode);
$("#wealthSn" + i).val(jsonArray[i].wealthSn);
}
}
</script>
</head>
<body>
<div>
<div class="titlediv">您所在的位置:固定资产管理->固定资产->固定资产编辑</div><br/>
<div>
<s:if test="wealth == null">
<div>
<iframe name='hidden_frame' id="hidden_frame" onload="test()" style='display:none'></iframe>
<form id="fileForm" action="${ctx}/wealth/wealth.do" method="post" enctype="multipart/form-data" target="hidden_frame">
<input type="hidden" name="action" value="uploadFile"/>
<div style="text-align: center;">
上传的Excel文件:<input type="file" style="width: 300px;" id="excelFile" name="excelFile"/>
<span id="msg" class="red_msg"></span>
<input type="button" value="上传" onclick="uploadFile()"/>
</div>
</form>
</div>
</s:if>
<div>
<div class="pagediv"></div>
<form id="theform" action="<s:url/>" method="post">
<input type="hidden" name="action" value="manage"/>
<input type="hidden" name="wealth.id" value="${wealth.id}"/>
<input type="hidden" name="wealth.inventory" value="${wealth.inventory}"/>
<table cellpadding="0" cellspacing="0" border="0" class="querytab" style="width:50%">
<tr>
<td class="alignright" width="25%"><span class="red spanmargin">*</span>名称:</td>
<td class="alignleft" width="75%"><input type="text" name="wealth.name" value="${wealth.name}"/></td>
</tr>
<tr>
<td class="alignright"><span class="red spanmargin">*</span>类别:</td>
<td class="alignleft"><s:select name="wealth.categoryId" value="%{wealth.categoryId}" listKey="key" listValue="value.categoryName" list="wealthCategoryMapping"></s:select></td>
</tr>
<tr>
<td class="alignright">货证号:</td>
<td class="alignleft"><input type="text" name="wealth.code" value="${wealth.code}"/></td>
</tr>
<tr>
<td class="alignright">厂商:</td>
<td class="alignleft"><input type="text" name="wealth.factory" value="${wealth.factory}"/></td>
</tr>
<tr>
<td class="alignright">规格型号:</td>
<td class="alignleft"><input type="text" name="wealth.model" value="${wealth.model}"/></td>
</tr>
<tr>
<td class="alignright">是否可用:</td>
<td class="alignleft">
<s:select list="yesNoStatuses" listValue="name" listKey="value" name="usableValue" value="%{wealth.usable.value}" onchange="changeUsableList();"></s:select>
<span class="red spanmargin"><br/>注:这是一批固定资产明细的总的"是否可用",当您要改变它时,也将改变所有明细的"是否可用"。</span>
</td>
</tr>
<tr>
<td class="alignright"><span class="red spanmargin">*</span>原值:</td>
<td class="alignleft"><input type="text" name="wealth.price" id="price" value="<fmt:formatNumber value="${wealth.price}" pattern="#.##"/>"/></td>
</tr>
<tr>
<td class="alignright"><span class="red spanmargin">*</span>数量:</td>
<td class="alignleft">
<s:if test="wealth.id != null">
<input type="text" name="wealthCount" id="wealthCount" value="${wealth.count}" disabled="disabled"/>
<input type="hidden" name="wealth.count" value="${wealth.count}" />
</s:if>
<s:else>
<input type="text" name="wealth.count" id="wealthCount" onblur="drawWealthCodeList()" value="${wealth.count}" />
</s:else>
</td>
</tr>
<tr>
<td class="alignright"><span class="red spanmargin">*</span>总价:</td>
<td class="alignleft"><input type="text" name="wealth.totalPrice" id="totalPrice" value="<fmt:formatNumber value="${wealth.totalPrice}" pattern="#.##"/>"/></td>
</tr>
<tr>
<td class="alignright">入库时间:</td>
<td class="alignleft">
<s:if test="wealth.id != null">
<input type="text" name="wealth.entryTime" id="wealth.entryTime" value="<fmt:formatDate value='${wealth.entryTime}' pattern='yyyy-MM-dd'/>" disabled="disabled" />
<input type="hidden" readonly="readonly" id="entryDate" name="entryDate" size="20" value="<fmt:formatDate value='${wealth.entryTime}' pattern='yyyy-MM-dd'/>"/>
</s:if>
<s:else>
<input type="text" readonly="readonly" id="entryDate" name="entryDate" size="20" value="<fmt:formatDate value='${wealth.entryTime}' pattern='yyyy-MM-dd'/>"/><input type="button" id="entryDateTrigger" value="选择"/>
</s:else>
</td>
</tr>
<tr>
<td class="alignright">增加方式:</td>
<td class="alignleft"><s:select name="increaseModeType" value="%{wealth.increaseMode.value}" listKey="value" listValue="name" list="increaseModes"></s:select></td>
</tr>
<tr>
<td class="alignright">存放地:</td>
<td class="alignleft"><input type="text" name="wealth.storageLocation" value="${wealth.storageLocation}"/></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="提交"/></td>
</tr>
</table>
<br/>
<table cellpadding="0" cellspacing="0" border="0" class="querytab" style="width:50%" id="wealthCodeTable">
<tr>
<td>序号</td>
<td>编号</td>
<td>sn码</td>
<td>是否可用</td>
<td>状态</td>
</tr>
<s:iterator value="wealthCodeList" status="index">
<tr>
<td>${index.count}</td>
<td>
<input type="hidden" name="wealthCodeIdsList[${index.count}]" value ="${id}" />
<input type="text" class="wealthCodeClass" name="wealthCodeNameList[${index.count}]" value ="${wealthCode}" />
</td>
<td>
<input type="text" class="wealthSnClass" name="wealthSnList[${index.count}]" value="${serialNumber}" />
</td>
<td>
<select class="wealthUsableClass" name='wealthUsableList[${index.count}]' onchange="changeTotalUsable();">
<s:iterator value="YesNoStatuses" >
<option value="${value }" <c:if test="${usable.value == value }">selected="selected"</c:if>>${name }</option>
</s:iterator>
</select>
</td>
<td>
${allocationStr}
</td>
</tr>
</s:iterator>
</table>
</form>
</div>
<div class="margin_10"><center><a href="javascript:window.history.go(-1);" class="easyui-linkbutton" iconCls="icon-reload">返回</a></center></div>
</div>
</div>
</body>
</html>
action 中的方法
/**
* 上传文件
* @return
*/
public String uploadFile() {
logger.info("上传excel开始");
try {
if (excelFile == null) {
logger.error("上传文件为空");
super.setErrorMessage("上传文件为空");
return "failure";
}
Workbook workbook = ExcelUtil.createWorkbook(excelFile);
if (workbook == null) {
throw new CommonException("请上传xls或者xlsx格式的文件");
}
Sheet sheet = workbook.getSheetAt(0);
if (sheet == null) {
throw new CommonException("获取Excel表Sheet错误");
}
if (sheet.getPhysicalNumberOfRows() <= 1) {
throw new CommonException("上传文件格式不对");
}
HttpServletResponse response = ServletActionContext.getResponse();
JSONObject json = new JSONObject();
JSONArray jsonArray = new JSONArray();
JSONObject jsonObj = new JSONObject();
for (int i = 1; i < sheet.getPhysicalNumberOfRows(); i++) {
String strNum = ExcelUtil.getCellValue(sheet.getRow(i).getCell(0));
String snCode = ExcelUtil.getCellValue(sheet.getRow(i).getCell(1));
if (StringUtils.isEmpty(strNum) && StringUtils.isEmpty(snCode)) {
break;
} else {
jsonObj.put("wealthCode", strNum);
jsonObj.put("wealthSn", snCode);
jsonArray.add(jsonObj);
}
}
json.put("data", jsonArray);
writeRs(response, json);
} catch (Exception e) {
logger.error(e.getMessage());
super.setErrorMessage(e.getMessage());
return "failure";
}
logger.info("上传excel结束");
return Action.NONE;
}
0 0
- iframe做上传和读取数据
- 用iframe做不刷新批量上传
- Json 网络上传数据和读取数据(简)
- iFrame页面数据的绑定与读取
- 对iframe数据的保存与读取
- 文件上传,iframe跨域数据提交
- 利用jquery+iframe做一个ajax上传效果
- 历史记录的读取和写入---读取数据和存入数据(做了排序和去重的处理)
- 无刷新上传图片,ajax 和 iframe
- sftp文件上传和读取
- 数组做数据成员(文件读取)
- spark读取hbase数据做分布式计算
- 第8周项目1(2)数组做数据成员文件的读取和保存
- 【2-2】HDFS的架构,元数据,客户端的上传和读取
- 上传excle Jxl读取Excel 导入数据
- 发送和读取数据
- 从父页面读取和操作iframe中内容方法
- 从父页面读取和操作iframe中内容方法
- 最大连续子数组(分治法、动态规划)
- POJ Hotel 线段树 区间合并
- Hide Ribbon With Users Permissions
- FreeBSD
- 深入浅出AT命令(4)-电话本相关命令
- iframe做上传和读取数据
- GPS名词解析
- Perceptron Learing Algorithm (PLA )matlab 实现
- 在项目中使用最新的ckeditor4.3.1的全过程+增加自己的上传本地图片按钮及将上传图片返回、保存
- GPS工作原理
- 记录我见到的有些怪异的C语言小程序
- js校验金额的方法
- SVM(支持向量机)- 基本思想(一)
- 苹果 Cocoa 编码规范中文版