我有一个javascript函数,在单击链接按钮时在default.aspx中正常工作。 但是,当我从代码后面调用这个函数时,它无法工作。
以下是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);
}
警报(qtyId)适用于双方并打印出相同的单词。 (默认页面和代码隐藏)。 但是后面的代码无法提醒(数量)。谁知道我的问题是什么?
注意到qtyId是default.aspx中转发器内的文本框ID。
答案 0 :(得分:0)
可能你传的是错误的ClientID
。
使用java脚本调试器(例如FireBug)并检查var qty = document.getElementById(qtyId);
是否不是null
(可能是)。
还要看here
答案 1 :(得分:0)
你能在下面试试吗?
protected void btnRedeemAll_Click(object sender, EventArgs e){
ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "temp", " <script>loadAdditionalInfoDialog('" + txtQty.ClientID + "')</script>", false);
}
似乎你错过了传递clientid的单引号。
答案 2 :(得分:0)
您是否遗漏了参数'" + txtQty.ClientID + "'
protected void btnRedeemAll_Click(object sender, EventArgs e){
ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "temp"," <script>loadAdditionalInfoDialog('" + txtQty.ClientID + "')</script>", false);
}
答案 3 :(得分:0)
试试:
Page.ClientScript.RegisterStartupScript(this.GetType(), "temp", "<script>loadAdditionalInfoDialog('" + txtQty.ClientID + "')</script>", false);
这是在初始页面呈现期间应该绑定的脚本的方法。
答案 4 :(得分:0)
我的猜测是问题是由你在按钮点击事件处理程序上创建控件txtQty引起的。
这是一个动态创建的控件,可能不存在于ASP.NET引擎生成的HTML中。
尝试使用页面上的控件以及您在设计视图中添加的控件,并检查是否出现相同的问题。
<强>更新强> 道歉。在按钮单击事件处理程序中,您正在尝试查找控件。你为什么这样做?控件是在应用程序的另一部分的某处创建的动态创建的控件吗?