当前位置: 代码迷 >> JavaScript >> javascript 验证下传txt文件的格式
  详细解决方案

javascript 验证下传txt文件的格式

热度:131   发布时间:2012-11-22 00:16:41.0
javascript 验证上传txt文件的格式
忙了一天,从网上找了一些 相关资料,完成了对上传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)
  相关解决方案