我的图片按钮及其onmouseover
操作有问题。
在我的ASPX文件中,我有类似的内容:
<script type="text/javascript">
function dosth() {
document.getElementById("btnload").click();
}
</script>
...
<asp:Panel ID="pnUp" Height="200px" runat="server"></asp:Panel>
...
<asp:Button ID="btnload" runat="server" OnClick="btnload_Click"
Visible="false" />
...
在我的ASPX .cs文件中,例如:
ImageButton btnImg = new ImageButton();
protected void Page_Load(object sender, EventArgs e)
{
btnImg.ID = "btnImg";
btnImg.ImageUrl = "images/imgbutton.png";
btnImg.CssClass = rblSize.SelectedValue.ToString();
btnImg.Attributes.Add("OnMouseOver", "dosth();");
pnUp.Controls.Add(btnImg);
}
protected void btnload_Click(object sender, EventArgs e)
{
// stuff to do
}
但这不起作用。
您知道如何在onmouseover
操作中运行C#函数吗? JavaScript函数dosth()
正在执行,但它仍然没有运行click函数。
答案 0 :(得分:2)
通过JavaScript引用ASP.NET服务器控件的ID时,必须使用控件的ClientID
属性。 ClientID
属性输出控件的完整客户端ID。
这应该有效:
<script type="text/javascript">
function dosth() {
document.getElementById('<%=btnload.ClientID%>').click();
}
</script>
答案 1 :(得分:1)
您有任何JavaScript错误吗?
我认为您的问题是您使用了错误的ID来查找JavaScript中的<img>
标记。
在ASP.NET中,自动生成客户端ID以确保它是唯一的。
您有两种选择:
选项1:在ClientIDMode
定义中将Static
设置为btnload
。
<asp:Button ID="btnload" runat="server" ClientIDMode="Static"
OnClick="btnload_Click" Visible="false" />
这样,btnload will
的客户端ID为"btnload"
。
选项2:更改JavaScript以插入生成的客户端ID。
<script type="text/javascript">
function dosth() {
document.getElementById('<% this.btnload.ClientId %>').click();
}
</script>