当用户单击文本框时,我必须执行服务器端事件。到目前为止,我可以使用 onfocus 事件来管理调用 javascript 函数,但是如果我尝试删除 onfocus,执行一些代码,将焦点放回控件上,然后它会在无限循环中再次触发 onfocus 事件。下面的示例...
html
<asp:TextBox ID="TextBox1" runat="server" AutoPostBack="True" onfocus="CallServer(this);"></asp:TextBox>
<asp:TextBox ID="TextBox2" runat="server" AutoPostBack="True" onfocus="CallServer(this);"></asp:TextBox>
Javascript
function CallServer(obj) {
if (obj != "") {
var control = document.getElementById(obj.id)
__doPostBack(obj.id, "onfocus");
}
}
代码隐藏
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If IsPostBack Then
Dim target As String = Page.Request.Params.Get("__EVENTTARGET")
Dim eventarg As String = Page.Request.Params.Get("__EVENTARGUMENT")
Dim PostControl As Control = Nothing
If target <> "" Then
PostControl = Page.FindControl(target)
End If
If eventarg = "onfocus" Then
CType(PostControl, TextBox).Attributes("onfocus") = "null"
...do some code
Page.SetFocus(PostControl)
CType(ctrl, TextBox).Attributes.Add("onfocus", "CallServer(this)")
End If
End If
End Sub