忙了一天,从网上找了一些 相关资料,完成了对上传txt文件的格式 验证问题。有所收获吧,在此记录一下,以备后用啊。
文章出处:DIY部落(http://www.diybl.com/course/1_web/javascript/jsjs/20091129/183729.html)
<html>
<head>
<script language="javascript" type="text/javascript">
//把一行中的多个空格替换为 一个空格
function rowOper(StrKey){
var reg = /^ {0,}| {0,}$/g
StrKey = StrKey.replace(reg, "");
reg = / {1,}/g
StrKey = StrKey.replace(reg, " ");
return StrKey;
}
/*
验证短信内容的格式,一个或多个空格作为分隔符号
每行为2列,为即时发送
每行为4列,为定时发送,时间格式为:yyyy-mm-dd hh[:mi:ss]
*/
function checkContent(){
var value = document.getElementById("msgcontent").value;
var arr= value.split("\n");//按行分割
var rows = arr.length;//得到 行数
var row1 = rowOper(arr[0]);//得到第一行的数据,一个空格作为分隔符号
var len = row1.length;//得到列数
//alert(len);
if(len>2){//定时发送,判断时间格式是否为 yyyy-mm-dd hh[:mi:ss]
var result = false;//默认时间格式不正确
for(i=0;i<rows;i++){
var cur= rowOper(arr[i]); //当前行的数据
if(cur.split(" ").length>3){
var temp = cur.split(" ");
var time = temp[2] +" "+ temp[3];
//alert(time);
result = testTime(time,i);//验证时间
if(!result){//时间格式不正确,只提示一次,上传不可用
document.getElementById("submit").disabled = true;
return ;
}
}else{//数据为三列,时间列时/分/秒无值
alert("第"+(i+1)+"行时/分/秒无值!!请参照右边的格式,设置数据格式");
return ;
}
}
if(result){//时间格式正确 ,可以提交发送。
//提交前数据不可编辑,readOnly的O一定要大写,若需再编辑,提交时取消既可。
document.getElementById("msgcontent").readOnly = true;
document.getElementById("submit").disabled = false;
}
}else if(len==2){//即时发送 数据格式 验证
for(i=0;i<rows;i++){
var cur= rowOper(arr[i]);
var temp = cur.split(" ");
if(temp.length>2){
alert("即时发送数据格式错误!!只能有两列数据,以空格分隔");
document.getElementById("submit").disabled = true;
return ;
}
}
alert("可以即时发送了");
document.getElementById("submit").disabled = false;
}else{
alert("请上传文件");
document.getElementById("submit").disabled = true;
}
}
function testTime(time,curRow){
//对日期格式进行验证 要求为2000-2099年 格式为 yyyy-mm-dd hh[:mi:ss] 并且可以正常转换成正确的日期
var pattern = /^(\d{4}-((0[1-9]{1})|(1[0-2]{1}))-((0[1-9]{1})|([1-2]{1}[0-9]{1})|(3[0-1]{1}))){1}(\s(\d{2}){1}(:\d{2})?(:\d{2})?)$/;
if(!pattern.test(time)) {
alert("第"+parseInt(curRow+1)+"行时间格式不正确,正确格式为yyyy-mm-dd hh[:mi:ss].请重新设置!");
return false;
}
return true;
}
//上传文件的格式 验证
function checkUpload(){
var file = document.getElementById("ffile").value;
if(!file){
alert("请选择文件!!");
return false;
}
var pattern = /.*\.((t|T)(x|X)(t|T))$/;
var pattern1 = /.*\.((x|X)(l|L)(s|S))$/;
if(pattern.test(file)||pattern1.test(file)) {
upload.submit();//
}else{
alert("不是txt或excel文件,请重新选择文件!");
return false;
}
}
</script>
</head>
<body>
<hr>
<form id="upload" action="#"
enctype="MULTIPART/FORM-DATA" method="post">
<font color="red" size="1">请上传个性化短信文件:</font>
<input type="file" name="file" id="ffile" />
<input type="submit" value="上传" onclick="return checkUpload()" />
<!-- " -->
</form>
<table border="0" width="100%" align="center">
<tr>
<td>
<textarea id="msgcontent" cols="70" rows="10">13578945685 aaaaaaaaaaaaa 2009/09/18 12:12:12
15555555555 cccccccccccccccccccc 2009/09/18
18888888888 ddddddddddddddddddddd 2009/09/18</textarea>
</td>
<td width="40%" bgcolor="#eef2fb">
<p>
请上传TXT格式或者Excel表格形式的数据.
</p>
<p>
数据格式:手机号码 短信内容 发送时间(可选)
</p>
<p>
时间格式:yyyy-mm-dd hh[:mi:ss]
</p>
<br>
<p>
举例1(定时发送):
</p>
<p>
13xxxxxxxx 您好,欢迎使用短信平台。 2009-11-28 12:32:25
</p>
<p>
15xxxxxxxx 您好,欢迎使用短信平台。 2009-11-28 12:32
</p>
<p>
18xxxxxxxx 您好,欢迎使用短信平台。 2009-11-28 12
</p>
<br>
<p>
举例2(即时发送):
</p>
<p>
13xxxxxxxx 您好,欢迎使用短信平台。
</p>
</td>
</tr>
</table>
<br>
<br>
<center>
<form id="form1" method="post" action="">
<input type="button" value="数据格式验证" onclick="checkContent()">
<input type="submit" value="发送" onclick="PSend()" id="submit"
disabled="disabled">
</form>
</center>
<div id="showTips"></div>
</body>
</head>
文章出处:DIY部落(http://www.diybl.com/course/1_web/javascript/jsjs/20091129/183729.html)