我正在使用此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();
}
我是否遗漏了某些内容,或者在文件上传时它是否会以这种方式工作?
答案 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()将永远不会被调用。