2

我在 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)");

(该文本框不在网格视图中),这很好用。

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

4

3 回答 3

0

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

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

于 2009-08-25T18:26:51.443 回答
0

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

感谢您的投入!

于 2009-08-25T18:46:24.697 回答
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);");
于 2009-12-01T09:56:14.470 回答