问题
I'm trying to use only a button as input file, it works fine in Firefox, Chrome, Safari but not in IE... I always get 'access denied' when submitting the form.
The code:
$('#input_file').click();
Is there a real fix for it? I wasted about 2 hours on google but I can't find it.
回答1:
I found a way around it. Wrap the button in label tags like this:
<label for="fileinput"><div class="button">Upload file</div></label>
<form>
<input id="fileinput" name="file" type="file">
</form>
Clicking the label will trigger the file input without invalidating the form in internet explorer (tested in IE9 & IE10)
EDIT: serve this code to IE and keep the javascript solution for other browsers. Firefox will not trigger the file input field when the label is clicked.
回答2:
I once saw this piece of code, I don't remember where but it is a workaround
if ($.browser.msie) {
// IE suspends timeouts until after the file dialog closes
$flUpload.click(function (event) {
setTimeout(function () {
changeFunc();
}, 0);
});
}
else {
// All other browsers behave
$flUpload.change(changeFunc);
}
回答3:
Security sandbox "feature" of IE. There is no way to get around it. Sorry. I use the JQuery file input, but still have to detect IE and use the IE basic input, I have spend a lot of time looking for answers and haven't found any. You could use flash, which is what uploadify does to get around the security of IE. I recommend it, it's a pretty damn good plug-in.
来源:https://stackoverflow.com/questions/7258226/jquery-input-file-click-method-and-access-denied-on-ie