这是我的HTML表单:
<form name="myForm" ng-submit="">
<input ng-model='file' type="file"/>
<input type="submit" value='Submit'/>
</form>
Run Code Online (Sandbox Code Playgroud)
我想从本地计算机上传图像,并想要读取上传文件的内容.我想用AngularJS做的所有这些.
当我尝试打印$scope.file它的值时,它是未定义的.
我想以<input type="file">编程方式在标记上触发click事件.
只是调用click()似乎没有做任何事情,或者至少它没有弹出文件选择对话框.
我一直在尝试使用侦听器捕获事件并重定向事件,但是我无法像点击某个人那样实际执行事件.
而不是使用<input type="file">,是否可以使用<input type="text">,然后使用javascript或jquery脚本,以便在单击文本框时,文件上传对话框显示.....(并在将其提交到表单时实际上载)
如何自动触发文件输入?即.在下面的链接中我想在加载时触发上传按钮
<form id="test_form">
<input type="file" id="test">
<div id="test1">
<button>Upload</button>
</div>
</form>
Run Code Online (Sandbox Code Playgroud)
$("#test1").trigger('click');
$("#test").trigger('click');
Run Code Online (Sandbox Code Playgroud) 我试图在单击另一个按钮时触发输入类型="文件"上的单击事件.
它在所有浏览器中都运行良好,除了在mac,Ipad和Iphone中的safari浏览器.
有什么技巧可以完成这项任务吗?
<input type="file" id="browse-button"/>我的HTML中有一个文件浏览器输入.
我有另一个带ID的按钮choose-file-button,当点击时,会打电话document.getElementById("browse-button").click();.单击此按钮时,它会正确单击#browse-button并打开文件对话框.
现在,我从这个答案中获取代码来拦截一个Ctrl+O按键并打开我的文件对话框,所以我有这个:
$(window).bind('keydown', function(e)
{
if (e.ctrlKey || e.metaKey)
{
switch (String.fromCharCode(e.which).toLowerCase())
{
case 's':
e.preventDefault();
// doesn't matter for this question
return false;
case 'o':
e.preventDefault();
document.getElementById("choose-file-button").click();
return false;
}
}
return true;
});
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,当我拦截时,Ctrl+O我点击我的#choose-file-button按钮,它document.getElementById("browse-button");在其onclick处理程序中调用.我在这个点击处理程序中放了一个断点,当我按下Ctrl+O它时会到达这个断点.但是,文件对话框永远不会显示.
通过调试,我发现如果我放alert(...);了#choose-file-button click()一行,那么警报会出现,并显示正常页面"打开文件"对话框(不是我的文件对话框).但是,如果我没有此警报,则根本不显示任何内容.
这是一个错误吗?如何修复它并通过截获显示我的文件对话框Ctrl+O?
编辑:我刚刚在Chrome中测试过,效果很好.但是,它仍然无法在Firefox中运行.