0

单击链接按钮时,我有一个在 default.aspx 中运行良好的 javascript 函数。但是,当我从后面的代码中调用此函数时,它无法工作。

这是我在 default.aspx 中的部分代码:

function loadAdditionalInfoDialog(qtyId)
{
    alert(qtyId);
    var qty = document.getElementById(qtyId).value;
    alert(qty);
}

单击按钮时,这是我在代码后面(default.aspx.cs)中的部分代码:

protected void btnRedeemAll_Click(object sender, EventArgs e){
    TextBox txtQty = (TextBox)itm.FindControl("txtQty");

    ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "temp", "<script>loadAdditionalInfoDialog(" + txtQty.ClientID + ")</script>", false);
}

alert(qtyId) 对双方都有效并打印出相同的单词。(默认页面和后面的代码)。但是后面的代码无法提醒(数量)。有谁知道我的问题是什么?

请注意,qtyId 是 default.aspx 中转发器内的文本框 ID。

4

5 回答 5

0

您是否缺少参数中的引号'" + txtQty.ClientID + "'

protected void btnRedeemAll_Click(object sender, EventArgs e){
    ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "temp"," <script>loadAdditionalInfoDialog('" + txtQty.ClientID + "')</script>", false);

}

于 2013-06-06T09:06:48.727 回答
0

你可以试试下面吗?

protected void btnRedeemAll_Click(object sender, EventArgs e){
ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "temp", "  <script>loadAdditionalInfoDialog('" + txtQty.ClientID + "')</script>", false);
}

似乎您在传递的 clientid 周围缺少单引号。

于 2013-06-06T09:01:47.353 回答
0

可能你传错了ClientID

使用 java 脚本调试器(例如 FireBug)并检查是否var qty = document.getElementById(qtyId);不是null(它可能是)。

也看看这里

于 2013-06-06T08:56:17.790 回答
0

试试看:

Page.ClientScript.RegisterStartupScript(this.GetType(), "temp", "<script>loadAdditionalInfoDialog('" + txtQty.ClientID + "')</script>", false);

这是在初始页面呈现期间应绑定的脚本的方法。

于 2013-06-06T09:48:19.957 回答
0

我的猜测是问题是由于您在按钮单击事件处理程序上创建控件 txtQty 引起的。

这是一个动态创建的控件,可能不存在于 ASP.NET 引擎生成的 HTML 中。

尝试使用页面上的控件并在设计视图中添加并检查是否遇到相同的问题。

更新: 道歉。在按钮单击事件处理程序中,您试图找到控件。你为什么这样做?该控件是在应用程序的另一部分某处创建的动态创建的控件吗?

于 2013-06-06T12:43:40.713 回答