无需物理点击按钮即可触发onserverclick

时间:2014-12-19 16:06:17

标签: javascript jquery asp.net

我想从用户那里抽象出文件浏览对话框,只显示一个上传按钮,如下所示:

<input type="button" id="uploadFile" value="Upload" /> 
<div class="hidden">
    <form id="uploadFileForm" method="post" enctype="multipart/form-data">
        <input type="file" id="browseForFiles" />
        <input type="button" id="submitFile" value="Submit File" runat="server" 
               onclick="return true;"
               onserverclick="SubmitFile_Click" />
    </form>
</div>

$("#uploadFile").click(function () {
    // trigger hidden file dialog
    $("#browseForFiles").click(); // works
});

$("#browseForFiles").change(function () {
    $("#submitFile").click(); // doesn't work; doesn't call onserverclick
});

物理点击submitFile按钮可以正常工作并调用服务器端方法,但由于我希望隐藏实际的服务器端按钮,因此用户无法进行物理点击。 你如何伪造jQuery / Javascript中的物理点击?

编辑:
我也尝试过:

<input type="submit" id="submitFile" value="Submit File" runat="server" 
       onclick="return true;"
       onserverclick="SubmitFile_Click" />

$("#uploadFileForm").submit(); // doesn't work either

2 个答案:

答案 0 :(得分:0)

你试过这个吗?

$('#uploadFileForm').submit()

答案 1 :(得分:0)

$("input[id$='submitFile']").click();有效。

我没有意识到ASP.NET正在将元素的ID替换为类似ctl00_PlaceHolderMain_submitFile的内容,即使使用常规HTML控件也是如此!

$("input[id$='submitFile']")[0].click();也适用。