asp.net ajax问题

I want to validate the textbox on text change event. When i click on the button, and enter any invalid address, the Invalid Email Address Error occurs firstly and then immediately hides.

I also have an isRecordAlreadyExist Function, this function checks the duplicate values exist in the database. I want this checking to be performed at textchanged event. But the event Dosent gets fired. and the value is not checked. My Code:

<tr>
            <td style="padding-top: 20px;">
                Email Address<asp:RequiredFieldValidator ID="RequiredFieldValidator5" runat="server"
                    ErrorMessage="*" ControlToValidate="txtEmail" ForeColor="Red" ValidationGroup="val" Display="Dynamic"></asp:RequiredFieldValidator>
            </td>
            <td style="padding-top: 20px;">
                <asp:UpdatePanel ID="UpdatePanel2" runat="server">
                    <ContentTemplate>
                        <asp:TextBox ID="txtEmail" runat="server" OnTextChanged="txtEmail_TextChanged" AutoPostBack="true"></asp:TextBox><asp:RegularExpressionValidator
                            ID="regexEmail" runat="server" ErrorMessage="Invalid Email Address" ControlToValidate="txtEmail"
                            ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" ForeColor="Red"
                            ValidationGroup="">
                        </asp:RegularExpressionValidator>
                    </ContentTemplate>
                </asp:UpdatePanel>
            </td>
        </tr>
<tr>
            <td style="padding-top: 10px;">
                <asp:Button ID="btnSubmit" runat="server" Text="Submit" CssClass="btnSubmitCSS" OnClick="btnSubmit_Click"
                    ValidationGroup="val" OnClientClick="return chk_isValid();" />
                <asp:Button ID="btnReset" runat="server" CausesValidation="False" Text="Reset" CssClass="btnSubmitCSS"
                    OnClick="btnReset_Click" />
            </td>
        </tr>

My Code Behind..

protected bool isRecordAlreadyExist(TextBox txt_Value, int res)
{
    ds = new DataSet();
    paramArray = new string[3, 2];
    paramArray[0, 0] = "@uname";
    paramArray[0, 1] = txtuname.Text.Trim();
    paramArray[1, 0] = "@emailid";
    paramArray[1, 1] = txtEmail.Text.Trim();
    paramArray[2, 0] = "`";
    obj = new DalLib();
    ds = obj.getDataSet("sp_Tbl_Login_MatchValues", paramArray);
    gvLogin.DataSource = ds.Tables[res].DefaultView;
    if (ds.Tables[res].Rows.Count > 0)
    {
        mtvResult.ActiveViewIndex = 3;
        btnSubmit.Enabled = false;
        return false;
    }
    else
    {
        btnSubmit.Enabled = true;
        return true;
    }
}

my asp:View Control:

<asp:View ID="vAlreadyExist" runat="server">
            <img src="Images/delete.png" alt="Edit" />
            <asp:Label ID="lblAlreadyExist" runat="server">Record Already Exist</asp:Label>
        </asp:View>


protected void btnSubmit_Click(object sender, EventArgs e)
    {

        if (ViewState["action"].ToString() == "Insert")
        {
            obj = new DalLib();
            paramArray = new string[7, 2];
           // if (!string.IsNullOrEmpty(txtFullName.Text.Trim()))
            {
                paramArray[0, 0] = "@FullName";
                paramArray[0, 1] = txtFullName.Text.Trim();
            }

            //if (!string.IsNullOrEmpty(txtuname.Text.Trim()))
            {

                paramArray[1, 0] = "@uname";
                paramArray[1, 1] = txtuname.Text.Trim();
            }
            //if (!string.IsNullOrEmpty(txtPwd.Text.Trim()))
            {
                paramArray[2, 0] = "@pwd";
                paramArray[2, 1] = txtPwd.Text.Trim();
            }
            //if (!string.IsNullOrEmpty(txtEmail.Text.Trim()))
            {
                paramArray[3, 0] = "@emailid";
                paramArray[3, 1] = txtEmail.Text.Trim();
            }

            paramArray[4, 0] = "@isAdmin";
            paramArray[4, 1] = chkAdmin.Checked.ToString();

            paramArray[5, 0] = "@isActive";
            paramArray[5, 1] = chkActive.Checked.ToString();
            paramArray[6, 0] = "`";
            result = obj.setData("sp_Tbl_Login_Insert", paramArray);
            LoadData();
            EmptyFields();
            mtvResult.ActiveViewIndex = 0;
        }

}

protected void txtEmail_TextChanged(object sender, EventArgs e)
{
    isRecordAlreadyExist(txtEmail, 1);
}

You are mixing client validation with server. You have AutoPostBack="true" for textbox. The regularExpression checks the validation on client and does not need AutoPostBack. You need server validation when button is clicked. Removing AutoPostBack from text box will cause client validation to check the email format on blur of textbox and server validation will be done on button click. Also remove OnTextChanged="txtEmail_TextChanged" from textbox.