这是我的文件输入元素:
<input type="file" id="StudentPhoto" value="StudentPhoto" style="display: none;">
这是验证功能:
$(document).ready(function() {
$('#StudentPhoto').change(function()
{
var file_data = $("#StudentPhoto").prop("files")[0];
var size = file_data.size;
var type = file_data.type;
var name = file_data.name;
var input = $("#StudentPhoto");
if(type !== 'image/png' && type !== 'image/jpg' && type !== 'image/jpeg')
{
alert("Only JPG & PNG files are allowed to upload as student photo.");
$('#StudentPhoto').click();
}
else if(size > 2097152)
{
alert("The maximum photo size is 2MB\n");
$('#StudentPhoto').click();
}
});
});
如果用户选择的文件格式或大小无效,则应该弹出对话框让他再次选择该文件,但它没有,语句{{1 \ n}在函数中没有工作。为什么?还有其他方法吗?
答案 0 :(得分:0)
或者您可以使用.trigger()
方法在按钮上触发click事件。我们也会使用input
,因为您已经存储了文件字段。
input.trigger('click');
希望这有帮助。
答案 1 :(得分:0)
您可以使用HTML DOM click()方法:
document.getElementById('StudentPhoto').click();
答案 2 :(得分:0)
将文件输入元素更改为:
dmsetup
请注意,我使用的是<input type="file" id="StudentPhoto" value="StudentPhoto" style="visibility: hidden">
,而不是visibility: hidden
。
您无法在未显示的文件输入上调用click事件。
答案 3 :(得分:0)
试试这个:
$(function() {
function onStudentPhotoChange($element) {
var file_data = $element.prop("files")[0];
var size = file_data.size;
var type = file_data.type;
var name = file_data.name;
switch(true) {
case (type !== 'image/png' && type !== 'image/jpg' && type !== 'image/jpeg') :
alert("Only JPG & PNG files are allowed to upload as student photo.");
onStudentPhotoChange($element);
break;
case (size > 2097152) :
alert("The maximum photo size is 2MB\n");
onStudentPhotoChange($element);
break;
}
}
$('#StudentPhoto').change(function()
{
onStudentPhotoChange($this);
});
});