Javascript 如何使用java脚本或jquery从键盘触发文件浏览器?

Javascript 如何使用java脚本或jquery从键盘触发文件浏览器?,javascript,jquery,asp.net,Javascript,Jquery,Asp.net,我正在使用以下代码创建文件上载控件: ASP代码: 我可以使用tabIndex设置按钮的焦点。当我使用键盘访问按钮时,焦点存在,但文件浏览器未打开。当我在键盘上按enter键时,什么也没发生。当用鼠标点击时,文件浏览器打开,一切正常 我遵循了本报告的建议 是否可以使用键盘触发JavaScript中的文件浏览器?但它无法解决我的问题 谁能帮我一下吗。提前感谢。您的问题是您将文件上载与标签一起封装 因此,当您尝试使用TAB键访问fileUpload时,它首先选择标签,这样事件就不会被触发,如果您再次

我正在使用以下代码创建文件上载控件:

ASP代码:

我可以使用tabIndex设置按钮的焦点。当我使用键盘访问按钮时,焦点存在,但文件浏览器未打开。当我在键盘上按enter键时,什么也没发生。当用鼠标点击时,文件浏览器打开,一切正常

我遵循了本报告的建议 是否可以使用键盘触发JavaScript中的文件浏览器?但它无法解决我的问题


谁能帮我一下吗。提前感谢。

您的问题是您将文件上载与标签一起封装 因此,当您尝试使用TAB键访问fileUpload时,它首先选择标签,这样事件就不会被触发,如果您再次单击该选项卡,它将关注fileUpload,这样当您单击enter时事件就会被触发

从文件上载中删除封闭标签,它将正常工作:

<label for="imageFileUpload" class="file-button new-gradient " tabindex="0">
<span>
<%=(string.Format("{0}", (UploadedFiles != null && UploadedFiles.Count > 0) ? "Add Documentation" : "Add Receipt" %>
</span>
</label> // put the closing label here , before Fileuplod asp tag .

<asp:FileUpload ID="imageFileUpload" runat="server" type="file" size="10" CssClass="file-upload visually-hidden"`enter code here`
onchange="PerformUpload();" ClientIDMode="Static" />

您的事件附加到$imageFileUpload,而不是$window。如果我使用$window对象,则当单击屏幕上的任何位置时,事件将被触发。我认为我将重点放在文件上载上,此时事件被触发并起作用,但它不可见,因为它被标签覆盖。那么,我如何使焦点停留在标签上并触发事件呢?我为标签添加了ID,它开始工作了。非常感谢。好的,太好了:。+1
$(function() {
    $("#imageFileUpload").on("keyup", function (event) {
         if (event.keyCode === 13) {
              $("input[type = 'file']").click();
         }
     });
});
<label for="imageFileUpload" class="file-button new-gradient " tabindex="0">
<span>
<%=(string.Format("{0}", (UploadedFiles != null && UploadedFiles.Count > 0) ? "Add Documentation" : "Add Receipt" %>
</span>
</label> // put the closing label here , before Fileuplod asp tag .

<asp:FileUpload ID="imageFileUpload" runat="server" type="file" size="10" CssClass="file-upload visually-hidden"`enter code here`
onchange="PerformUpload();" ClientIDMode="Static" />