警报然后重新加载页面IN检测文件扩展名上传脚本

时间:2012-11-06 22:45:01

标签: javascript html upload reload

我正在使用此javascript来限制上传时文件类型的扩展名:

function TestFileType( fileName, fileTypes ) {
if (!fileName) return;

dots = fileName.split(".")
//get the part AFTER the LAST period.
fileType = "." + dots[dots.length-1];

return (fileTypes.join(".").indexOf(fileType) != -1) ?
alert('Correct File Type Function Here') :
alert('Wrong File Type Function Here');
}

<input name="replay_file" id="replay_file" type="file"/> 
<input type="submit" id="upload_file" value="Upload" name="uploadReplay" onClick="TestFileType(this.form.replay_file.value, ['w3g','.w3g']);" />

我希望它提醒(错误的文件类型),然后重新加载页面(这样它取消上传而不是浪费时间)但到目前为止我只能让alrert框工作但不是页面重新加载功能那,页面重新加载将无法工作我甚至尝试了转到网址和Windows位置,但它将无法工作,只会继续上传警报框后的文件:

return (fileTypes.join(".").indexOf(fileType) != -1) ?
null() :
alert('Warcraft III replay file (.w3g) allowed only!');window.location.reload();
}

我是否遗漏了某些内容,或者在文件上传时它是否会以这种方式工作?

2 个答案:

答案 0 :(得分:1)

如果扩展程序不正确,请使用onsubmit事件取消表单,如下所示:

function TestFileType( fileName, fileTypes ) {
if (!fileName) return;

dots = fileName.split(".")
//get the part AFTER the LAST period.
fileType = "." + dots[dots.length-1];

if (fileTypes.join(".").indexOf(fileType) != -1) {
   //alert('Correct File Type Function Here');
   return true;
} else {
   alert('Wrong File Type Function Here');
   return false;
}
}

在表单元素上连接了onsubmit事件:

<form onsubmit="return TestFileType(this.form.replay_file.value, ['w3g','.w3g']);" ...

答案 1 :(得分:1)

杰里米,

我看到你已经接受了这个问题的答案,但是由于你发布的代码中的基本问题,我担心你将来会遇到其他问题。

首先,

return (condition) ? alert('Correct') : alert('Wrong');

alert 是一个没有返回值的本机函数。 如果你把它视为返回某些东西,那么某些东西将是未定义的,所以无论你的条件是什么,上面的行总是返回 undefined 。 如果我的解释不明确,请尝试:

alert(alert(Math.min(-3,5)));

其次,

return (condition) ? null() : alert('msg'); window.location.reload();

null 不是函数。它是一个保留字,表示具有未知值的已定义对象。

此外,三元if(b?x:y)以第一个分号结束,因此 reload()将永远不会被调用。