2012-01-17 81 views
-1

我有一个包含3个文本框的表单,用户可以上传文件。他们必须选择上传至少1个文件,文件必须是jpg,png,pdf。我试图验证这使用JavaScript,并检查用户是否至少选择了1个文件,并且上传前的格式是正确的我有下面的代码,但它不工作。我希望有人能帮助谢谢。用于文件上传的javascript表单验证

我当前的代码:

function validate_ext() { 
    var filename = document.getElementById("file1").value; 
    var filename2 = document.getElementById("file2").value; 

    var ext = getExt(filename); 
    var ext2 = getExt(filename2); 
    if((ext == "pdf") || (ext=="PDF") || (ext=="jpg") || (ext=="jpeg") || (ext=="png") || (ext=="PNG")) 
     return true; 
    alert("Please upload files in correct format only."); 
    return false; 

    if(filename2!=''){ 

    if((ext2 == "pdf") || (ext2=="PDF") || (ext2=="jpg") || (ext2=="jpeg") || (ext2=="png") || (ext2=="PNG")) 
     return true; 
    alert("Please upload files in correct format only."); 
    return false; 
    } 
} 


function getExt(filename) { 
    var dot_pos = filename.lastIndexOf("."); 
    if(dot_pos == -1) 
     return ""; 
    return filename.substr(dot_pos+1).toLowerCase(); 
} 
+5

请更具体比“它不(sp)工作” – 2012-01-17 21:07:09

+0

我注意到的一件事:你正在将扩展名转换为小写,但与大写 – f2lollpll 2012-01-17 21:12:25

回答

2

(测试here):

function getExt(filename) { 
    var dot_pos = filename.lastIndexOf("."); 
    if (dot_pos == -1) { 
     return ""; 
    } 
    return filename.substr(dot_pos + 1).toLowerCase(); 
} 

function validate_ext() { 
    var filename = document.getElementById("file1").value; 
    var filename2 = document.getElementById("file2").value; 
    var ext = getExt(filename); 
    var ext2 = getExt(filename2); 
    if (!((ext == "pdf") || (ext == "jpg") || (ext == "jpeg") || (ext == "png"))) { 
     alert("Please upload files in correct format only."); 
     return false; 
    } 

    if (filename2 != "") { 
     if (!((ext2 == "pdf") || (ext2 == "jpg") || (ext2 == "jpeg") || (ext2 == "png"))) { 
      alert("Please upload files in correct format only."); 
      return false; 
     } 
    } 

    return true; 
} 

你有几个错误。

  • 什么sjums说扩展被转换为小写,你不需要比较大写字符串。
  • 如果第一个检查是true,那么您的代码会在它应该运行第二次检查时返回。

我还会在最后加了return true,因此函数返回只有当它通过所有的验证此值。

+0

比较,谢谢你的答案。我想使用户应至少选择一个文件,因此它们不应该是强制选择2个文件。我如何验证这一点。谢谢。 – 2012-01-17 21:19:00

+0

那么,代码已经这样做了,因为对于'file1',你没有'file2'上的'if(filename1!=“”)'。 – cambraca 2012-01-17 21:22:50

+0

感谢您的意见和答复。你认为我正在使用javascript是否足够安全,或者我应该做一些其他额外的检查? – 2012-01-17 21:26:01