2

我在创建的 ASP.NET 项目中创建了 Table 的一个子类。该表使用一个类来格式化和创建 TableRows 和 TableCells,我们可以称之为 RowCreator。所以 MyTable 调用 rowCreator.CreateRow() 并返回一个 TableRow 里面有很多好东西。

在这个 TableRow 中有一个 TextBox,它应该在 onblur 事件上触发一个 javascript 方法,它是由 RowCreator 类添加的。

textBox.Attributes.Add("onblur", "javascriptMethod('" + textbox.ClientID + "');");

我还尝试创建了一个 textBox 的子类,它实现了一个添加 onblur 事件的方法:

Attributes.Add("onblur", "javascriptMethod('" + this + "');")

这是行不通的。ID 只是文本框子类的命名空间。

并且 JavaScript 方法非常简单:

function javascriptMethod(boxId) { alert(boxId); }

问题是,我猜这是因为尚未将文本框控件添加到控件集合中,因此 boxId 不是正确的客户端 ID。它与服务器端 ID 相同。有没有一种方法可以获取正确的 ID,而无需先在页面上使用 Controls.Add 添加行?还有其他建议吗?

我什至这样做的原因是每当它被改变时从一个javascript函数中读取文本框内容。也许有更好的方法来做到这一点?

4

1 回答 1

7

您可以将 javascript 调用更改为:

textBox.Attributes.Add("onblur", "javascriptMethod(this);");

然后您可以在您的 javascript 方法中访问文本框:

function javascriptMethod(textbox) { alert(textbox.id); }

这样您就不需要使用文本框控件的 ClientID。

于 2009-01-19T10:16:14.260 回答