此需求常见于用户注册时的用户名重复判断,可是extaspnet 的文本框没有提供这个事件,怎么办?
分析:
extaspnet的Textbox只提供了一个OnTextChanged事件,但这个事件只在表单提交时才会触发
那就给这个文本框添加一个失去焦点的提交事件不就行了(extjs)
前台代码:
- <form id="form1" runat="server">
- <ext:PageManager ID="PageManager1" runat="server" />
- <ext:Form ID="Form2" runat="server">
- <Rows>
- <ext:FormRow>
- <Items>
- <ext:TextBox ID="TextBox1" runat="server" Label="用户名" Text="" Required="true" OnTextChanged="TextBox1_TextChanged"></ext:TextBox>
- </Items>
- </ext:FormRow>
- <ext:FormRow>
- <Items>
- <ext:TextBox ID="TextBox2" runat="server" Label="密码" Text="" TextMode="Password"></ext:TextBox>
- </Items>
- </ext:FormRow>
- </Rows>
- </ext:Form>
- </form>
后台代码:
- protected override void Render(HtmlTextWriter writer)
- {
- StringWriter strWriter = new StringWriter();
- base.Render(new HtmlTextWriter(strWriter));
- writer.Write(strWriter.ToString().Replace("id:/"" + TextBox1.ClientID + "/",",
- "id:/"" + TextBox1.ClientID + "/",listeners: {'blur': function(f){if (f.getValue()!='') {__doPostBack('','');}}},"));
- }
-
- protected void TextBox1_TextChanged(object sender, EventArgs e)
- {
- ExtAspNet.Alert.Show(TextBox1.Text+" 这个用户名重复了");
- }
嗯,这里有点技巧,是改写了extaspnet默认的extjs输出,添加一个监听事件
测试一下,达到需求了,Textbox1失去焦点且非空时
触发了TextBox1_TextChanged事件
如有更简洁的方法,可回复告知我,一起学习
|