"return" 不处理输入类型文件的更改事件



我正在按照代码进行运行即。(我正在使用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);
});

此代码有其他选择或问题吗?

您正在调用输入#图像选择的更改事件,并且您正在更改函数内的值,因此,执行后,返回它再次返回它,将其内部变为" INCER"更改事件处理程序,用于您的值正在设置,

 $('#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);

让我知道您是否面临任何问题。

最新更新