我想以<input type="file">编程方式在标记上触发click事件.
只是调用click()似乎没有做任何事情,或者至少它没有弹出文件选择对话框.
我一直在尝试使用侦听器捕获事件并重定向事件,但是我无法像点击某个人那样实际执行事件.
我试图使用jQuery触发上传框(浏览按钮).
我现在尝试的方法是:
$('#fileinput').trigger('click');
Run Code Online (Sandbox Code Playgroud)
但它似乎没有用.请帮忙.谢谢.
我有一个HTML表单(upload.htm),里面有一个HTML文件上传控件.
<form id="frmupload" name="upload" enctype="multipart/form-data" action="uploadhandler.ashx" method="post">
<input id="uploader" name="uploadctrl" type="file"/>
</form>
Run Code Online (Sandbox Code Playgroud)
上面的页面中还有一个JavaScript方法,如:
function performUpload(){
document.getElementById('frmupload').submit();
}
Run Code Online (Sandbox Code Playgroud)
我从一个页面(uploadpage.htm)中调用它iframe:
<iframe id="docframe" src="upload.htm" style="display:none"></iframe>
Run Code Online (Sandbox Code Playgroud)
我尝试从uploadpage.htm页面执行下面的语句:
var i = document.getElementById('docframe');
i.contentWindow.performUpload();
Run Code Online (Sandbox Code Playgroud)
我得到一个错误,说访问被拒绝,我的调试器停止在我显示的第一个JavaScript函数.这两个文件都位于Web项目中的相同位置.他们也有相同的域名.为什么我会收到此错误?
当然,早些时候,我可以发布页面:当我没有name为HTML上传控件设置属性时.但是在我在HTML标记中设置name属性后,我得到了这个奇怪的错误.为什么我第一次没有这个?
看看@ this post - > "访问被拒绝"当脚本试图访问IE8中的iframe时,但它没有帮助.
javascript file-upload cross-domain access-denied internet-explorer-8
我有一个看起来像这样的网页
<html>
<head>
<title>File Upload Click Test</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
</head>
<body>
<div onclick="$('input[type=file]').click()" >CLICK SIMULATOR</div>
<input type="file"></input>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我的目标是让div在文件输入上引发点击事件,这似乎与我在IE和Chrome中所期望的完全一样,但在Firefox中不起作用(当你点击时没有打开文件浏览器div).
有没有办法让这个在FF工作?
我在这里发了一个帖子:
但是,我遇到了一个关于文件上传的表单处理的新事件,如果有人遇到这个问题,我很好奇.
我最初的问题是我无法使用onchange事件工作,我想也许这是我的javascript问题,但我发现它与表单被激活的方式有关.
我有一个文件输入
<input type="file" name="abc"/>
Run Code Online (Sandbox Code Playgroud)
现在我做了两件事.
我隐藏了输入并创建了一个按钮(用于更好的样式控制)来激活输入.
<button id="mybutton">click to upload a pic</button>
<input type="file" name="abc"/>
Run Code Online (Sandbox Code Playgroud)
然后JS为两者之间的互动:
$("#mybutton").click(function() {
$("Input[type=file]").click()
};
Run Code Online (Sandbox Code Playgroud)
当然是表单的提交(我在本例中使用了parent,但是在我的实际代码中,我使用了表单id).
$("input[type=file]").change(function() {
$(this).parent().submit();
});
Run Code Online (Sandbox Code Playgroud)
当我点击"mybutton"时,预期结果确实发生,我的浏览窗口打开,让我从我的电脑中选择一个文件.此外,当我在IE以外的所有浏览器中更改文件时,会触发onchange事件.现在,如果我取消隐藏表单并手动单击"浏览"按钮并选择一个文件,则会触发onchange事件.所以基本上浏览器会点击实际文件按钮而不是执行$("input [type = file]").click()
有人知道怎么修这个东西吗?
上传功能在Chrome中运行得非常好,但它无法在IE 11上运行.
我正在尝试使用以下dom元素实现上载功能:
<input type="file" id="file-upload" class="hidden-inputs"/>
Run Code Online (Sandbox Code Playgroud)
我在用户点击其他内容时触发了点击,输入本身就被隐藏了.这是代码:
$("#file-upload").click();//triggering click
input.change(function(){//when file is selected
var file = this.files[0];
api.File.upload(path, file, function(err){//upload to server
//do something in callback
});
});
Run Code Online (Sandbox Code Playgroud)
当我尝试调试代码时,添加一个断点表明它不会进入更改时调用的函数.这只发生在我上传一段时间的第一次尝试,如果我不断尝试上传SAME文件.但是,如果我尝试上传文件一次(不起作用),那么我选择一个差异文件,它完美地运行.如果我触发上传功能会发生同样的事情,但是第一次没有选择项目,我点击取消,然后我再次尝试上传,这次选择一个文件,它将完美地工作.on change事件被触发,所以这不是问题.任何想法可能导致这种行为,只在IE?我很感激帮助!
编辑:此外,如果它有帮助.当多次重复失败的上载,然后在另一个文件上选择上载时,它将执行上次尝试它的次数.
javascript ×6
jquery ×4
file-upload ×3
html ×2
cross-domain ×1
css ×1
forms ×1
html5 ×1
upload ×1