无法从gridview中的文本框中触发Javascript函数

时间:2009-08-25 18:20:35

标签: c# javascript-events onblur

我在Gridview的ItemTemplate中有一个文本框。在_RowDataBound事件中,我将一个属性添加到文本框中,如下所示:

TextBox txtQuantity = (TextBox)e.Row.FindControl("txtQuantity");
txtQuantity.Attributes.Add("onkeypress", "CheckInputForNumeric(event)"); 

它根本不会激活JS函数。

我已经尝试过onClick,onBlur,onKeyPress ...甚至尝试将案例改为:onclick,onblur,onkeypress ......似乎没有什么能解雇我的JS函数。

我在同一页上的其他地方:

    txtAddMarkup.Attributes.Add("onkeypress", "CheckInputForNumeric(event)");

(该文本框不在gridview中) 这很好用。

我在这一点上完全陷入困境和沮丧,因为无论我做什么,我都无法让这个文本框启动JavaScript函数

3 个答案:

答案 0 :(得分:0)

请运行您的项目并查看通过查看broswer中的源(IE,Firefox,Safari等)生成的文本框的名称。您可能会看到文本框的名称已更改。谢谢,ASP。

您无法使用DOM按名称访问元素,因为它们已为您重命名。

答案 1 :(得分:0)

出于某种原因,删除临时互联网文件并重新加载页面并没有获得最新的.js。我不得不卸载项目并重新构建它。这很奇怪,因为我以前从来没有这样做过其他控件

感谢您的投入!

答案 2 :(得分:0)

试试这个:

TextBox txtQuantity = (TextBox)e.Row.FindControl("txtQuantity");
txtQuantity.Attributes.Add("onkeypress", "CheckInputForNumeric(event)");

txtQuantity.Attributes["onkeypress"] =
    string.Format("javascript:CheckInputForNumeric(this,'{0}','{1}','{2}');", argument1, argument2, argument3);

或者只是

txtQuantity.Attributes["onkeypress"] =
    string.Format("javascript:CheckInputForNumeric (this);");