我正在运行以下代码,它在chrome / firefox中正常工作,在IE.in IE中无法工作后执行返回它再次进入事件处理程序,这就是为什么我的验证消息无法在IE中工作。(i我正在使用IE10)
添加了整个事件处理程序:
$('#image-select').change(function (e) {
event.preventDefault ? event.preventDefault() : (event.returnValue = false);
HideImageValMsg();
var imageFiles = (apQuery('#image-select'))[0].files;
var file = imageFiles[0];
var filename = file.name;
var imageArr = ["gif", "jpg", "png", "jpeg", "bmp", "tif", "tiff"];
if (imageArr.indexOf(filename.substring(filename.lastIndexOf('.') + 1).toLowerCase()) == -1) {
$('#divInvalidImage').removeClass("apUI-hidden");
$('#image-name').text('');
$('#image-select').val('');
return;
}
var fileNameWtoext = filename.substr(0, filename.lastIndexOf('.')) || filename;
if (fileNameWtoext.startsWith('.') || fileNameWtoext.endsWith('.') || /[%&*"'?#<>:{}(),.\/|~\\]+/gi.test(fileNameWtoext) || file.size == 0) {
$('#divInvalidImageNm').removeClass("apUI-hidden");
$('#image-name').text('');
$('#image-select').val('');
return;
}
if (fileNameWtoext.length > 100) {
$('#divFileLength').removeClass("apUI-hidden");
$('#image-name').text('');
$('#image-select').val('');
return;
}
$('#image-name').text(imageFiles[0].name);
});
此代码有替代或问题吗?
答案 0 :(得分:0)
您正在调用输入#image-select的更改事件,并且您正在更改函数内部的值,因此在执行返回之后,它再次进入更改事件处理程序中以获取您设置的值,
$('#image-select').val('');
所以你可以尝试下面的代码,你可以在你的更改事件处理程序的开头检查输入的值,然后再从那里返回false,
$('#image-select').change(function (e) {
if ($('#image-select').val() == "") {
return false;
}
//Add your code here...
});
此处无需添加以下行以防止回调,
event.preventDefault ? event.preventDefault() : (event.returnValue = false);
如果您遇到任何问题,请告诉我。