我在我创建的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函数中读取文本框内容。也许有更好的方法来做到这一点?
答案 0 :(得分:7)
您可以将javascript调用更改为:
textBox.Attributes.Add("onblur", "javascriptMethod(this);");
然后您可以使用javascript方法访问文本框:
function javascriptMethod(textbox) { alert(textbox.id); }
这样您就不需要使用文本框控件的ClientID。