忙了一天,从网上找了一些 相关资料,完成了对上传txt文件的格式 验证问题。有所收获吧,在此记录一下,以备后用啊。
<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)