0

我对图像按钮及其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
}

但这不起作用。

你知道如何运行 C# 函数吗onmouseover?JavaScript 函数dosth()正在执行,但仍然没有运行 click 函数。

4

2 回答 2

2

通过 JavaScript 引用 ASP.NET 服务器控件的 ID 时,必须使用控件的ClientID属性。该ClientID属性输出控件的完整客户端 ID。

这应该有效:

<script type="text/javascript">
    function dosth() {
        document.getElementById('<%=btnload.ClientID%>').click();
    }
</script>
于 2013-11-10T20:13:37.527 回答
1

你有任何 JavaScript 错误吗?

我认为您的问题是您使用错误的 id<img>在 JavaScript 中查找标签。

在 ASP.NET 中,客户端 ID 是自动生成的,以确保它是唯一的。

你有两个选择:

选项 1:在您的定义中设置ClientIDMode为。Staticbtnload

<asp:Button ID="btnload" runat="server" ClientIDMode="Static"
    OnClick="btnload_Click" Visible="false" />

这样,btnload willbe的客户端 id "btnload"

选项 2:更改您的 JavaScript 以插入生成的客户端 ID。

<script type="text/javascript">
function dosth() {
    document.getElementById('<% this.btnload.ClientId %>').click();
}
</script>
于 2013-11-10T20:13:58.963 回答