点击button触发FileUpload控件的click事件
通过点击button按钮触发FileUpload控件,避免因浏览器不同而导致FileUpload控件样式发生变化,影响页面效果。
注意:需使用 < input type=“button” > 标签,< button >标签无法实现。
实现代码
<body>
<form id="form1" runat="server">
<div>
<asp:FileUpload ID="FileUpload1" runat="server" />
<input id="uploadFile" type="button" name="button" value="选择文件"onclick="javascript: Open_uploadFile();" />
</div>
</form>
</body>
<script type="text/javascript">
// 选择上传文件
function Open_uploadFile() {
var ie = navigator.appName == "Microsoft Internet Explorer" ? true : false;//判断是否是IE浏览器
if (ie) {
document.getElementById("FileUpload1").click(); // 通过document元素点击FileUpload控件
}
else {
var event = document.createEvent("MouseEvents");//鼠标事件
event.initEvent("click", true, true);
document.getElementById("FileUpload1").dispatchEvent(event);
}
}
</script>
效果图:
可对< asp:FileUpload ID=“FileUpload1” runat=“server” /> 添加属性Style=“visibility: hidden; position: absolute;” 实现隐藏控件效果。代码如下:
<asp:FileUpload ID="FileUpload1" runat="server" Style="visibility: hidden; position: absolute;" />
若要完全实现FileUpload控件的样式替代效果,可用button和textbox实现。代码如下:
<body>
<form id="form1" runat="server">
<div>
<asp:FileUpload ID="FileUpload1" runat="server" Style="visibility: hidden; position: absolute;" />
<input id="uploadFile" type="button" name="button" value="选择文件" onclick="javascript: Open_uploadFile();" />
<asp:TextBox ID="txtFileUrl" runat="server" ReadOnly="True"></asp:TextBox>
</div>
</form>
</body>
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
this.FileUpload1.Attributes.Add("onchange", "document.getElementById('" + txtFileUrl.ClientID + "').value = this.value");
}
}
效果图: