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