Javascript 如何使事件onchange的HTML输入对象不提示文件资源管理器?

Javascript 如何使事件onchange的HTML输入对象不提示文件资源管理器?,javascript,html,blob,Javascript,Html,Blob,今天我遇到了一个问题,有两种解决方法,但我不知道如何正确地实现其中任何一种 我有一个file类型的HTML元素,它附加了一个onchange事件。该元素用于处理用户拾取图像文件并预览图像的提示。对我的问题来说,进一步的操作是毫无意义的,所以我不会深入讨论它们 这里是我的问题所在:如果用户再次点击输入(读:第一次加载图像后),会弹出一个确认窗口,他决定是否要替换当前图像 如果确认返回false,则我不希望文件资源管理器弹出,并允许用户选择一个新文件,这已经发生了。如果确认返回true,则我确实希望

今天我遇到了一个问题,有两种解决方法,但我不知道如何正确地实现其中任何一种

我有一个file类型的HTML元素,它附加了一个onchange事件。该元素用于处理用户拾取图像文件并预览图像的提示。对我的问题来说,进一步的操作是毫无意义的,所以我不会深入讨论它们

这里是我的问题所在:如果用户再次点击输入(读:第一次加载图像后),会弹出一个
确认
窗口,他决定是否要替换当前图像

如果确认返回
false
,则我不希望文件资源管理器弹出,并允许用户选择一个新文件,这已经发生了。如果确认返回
true
,则我确实希望文件浏览器弹出

我曾尝试使用
onclick
事件检查用户是否要替换它,但我仍然无法阻止文件浏览器弹出。但是,如果用户对确认窗口说“否”,我可以阻止图像更改

这是我的密码:

处理事件的输入:

<label class="labelText"> <input id="uploadImage" type="file"
        onchange="PreviewImage();"/> Upload Image
</label>
function PreviewImage() {
    var newMapURL = "";

    if(oldMapURL.length == 0){
        oldMapURL  = document.getElementById("uploadImage").value;
        loadImage(newMapURL);
    }
    else {
        newMapURL = document.getElementById("uploadImage").value;
        if (confirm("Are you sure you want to create a new map?")) {
            cleanWorkspace();
            loadImage(newMapURL);
        }   
    }   
}

function loadImage(newMapURL){
        var reader = new FileReader();
        reader.readAsDataURL(document.getElementById("uploadImage").files[0]);
        reader.onload = function(oFREvent) {
        document.getElementById("previewImage").src = oFREvent.target.result;       
    }           
}
请注意,我想在纯JavaScript中实现这一点(阅读:无jQuery或类似)

编辑:在任何人提到之前,是的,我知道没有使用
newMapURL
。然而。


<input id="uploadImage" type="file" onchange="PreviewImage();" onclick="return confirm('Sure?')" />

只有当字段为空时,您才需要使函数show confirm生效。

Ok最后,通过尝试和错误,我得出结论,出于某种原因,如果我完全按照您所说的方式操作,它就会工作(不是我想要的方式,但它确实工作)。因为我需要额外的功能,所以我需要将它放在一个函数中,但每当我将它移动到一个函数时,文件资源管理器无论如何都会启动。即使my Function实际上只包含confirm的返回。请确保您的onclick=“return func();”not just onclick=“func()”即使返回false,仍会提示文件资源管理器