前台代码:
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:TextBox ID="txtPwd" runat="server" TextMode="Password" Width="150px" AutoPostBack="True" OnTextChanged="Page_Load"></asp:TextBox>
</ContentTemplate>
</asp:UpdatePanel>
后台代码:
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack)
{
if (txtPwd.Text.Length < 6 || txtPwd.Text.Length > 14)
{
errPwd.Text = "密码必须在6到14位数之间";
}
else
{
errPwd.Text = "";
}
}
}
这样如果不符合就会显示"密码必须在6到14位数之间";
然后你填入符合的条件,局部就刷了下把errPwd里面的字刷掉,可是同时也会把密码框刷成空的,文本框就不会被刷掉。
应该如何实现不把密码刷掉了。如果Textbox的属性AutoPostBack设为false,就可以,但是当鼠标离开密码框时,就不会局部刷新了。要的效果就像百度那样。
这个功能根本没必要使用ajax 啊。
简单的一个 js function就搞定了。你那样做对服务器来讲可受不了
<input id="txtUserName" onchange="validator();" /><span id="errorTip"></span>
function validator(){
var length = document.getElementById("txtUsreName").value.length;
if(length < 6 || length > 14){
document.getElementById("errorTip").innerHTML="密码必须在6到14位数之间";
}
}
只有必须用到服务器数据的验证才有必要到用Ajax(比如说用户名是不是已经有人用了)
这种简单的验证用验证控件或javascript来做就行了。没必要为了这些验证浪费服务器资源~
另外发现iIMax的一个笔误~~~
<input onchange="validator();" id="txtUserName" /><span id="errorTip"></span>
function validator(){
var length = document.getElementById("txtUsreName").value.length;
if(length < 6 || length > 14){
document.getElementById("errorTip").innerHTML="密码必须在6到14位数之间";
}
}
密码框在回传之后本来就是会被刷空的,这是html表单控件的一个特性,AutoPostBack设为false就不会触发回传事件,当然也不涉及到刷新问题,其实你不必这样做,就像楼上所说,你可以用js实现,当提交时为了保险起见,在服务器端再做一下验证就行了!
把AutoPostBack="True"去掉,然后把if (IsPostBack)改成if (!IsPostBack)试试