“更新”面板会自动清除文本框

时间:2013-05-01 09:45:51

标签: asp.net ajax vb.net

我正在尝试组合自动打印邮件的事件,以防密码不匹配。为此,我正在使用“更新”面板。

错误消息打印完美我的问题是两个文本框之后自动创建。甚至以为我没有在代码中指定它。我无法理解我做错了什么。

这是前端的代码:

<asp:TextBox ID="NonPass1" runat="server" TextMode="Password"></asp:TextBox>
 <asp:TextBox ID="NonPass2" runat="server" TextMode="Password" autopostback="True"></asp:TextBox>
                     <asp:UpdatePanel ID="UpdatePanel6" runat="server">
                     <ContentTemplate>
                     <asp:Panel ID="Panel6" runat="server">
                     <asp:Label ID="Label1"  class="errorMess" runat="server" Text="The Passwords do not match!!!"></asp:Label>
                     </asp:Panel>
                     </ContentTemplate>
                     <Triggers>
                     <asp:AsyncPostBackTrigger ControlID="NonPass2" EventName="TextChanged" />
                     </Triggers>
                     </asp:UpdatePanel>

这是后端代码(我正在使用VB):

Protected Sub NonPass2_TextChanged(ByVal sender As Object, ByVal e As EventArgs) Handles NonPass2.TextChanged
    If NonPass1.Text <> NonPass2.Text Then
        Panel3.Visible = False
        Panel6.Visible = True
    Else
        Panel3.Visible = False
        Panel6.Visible = False
    End If
End Sub

5 个答案:

答案 0 :(得分:0)

也许你可以使用javascript函数。

<script>
    var t1 = false; // textbox1 onfocus triggered = true;
    var t2 = false; // textbox2 onfocus triggered = true;
    function clearTBox() {
        if (t1 && t2) {
            if (document.getElementById("textbox1Name").value != document.getElementById("textbox1Name2").value) {
                alert("Insert your code here");
            }
        }
    }
</script>

答案 1 :(得分:0)

你是什​​么意思: 我的问题是两个文本框都在它之后自动创建

请,让你的问题更清晰


尽量不要使用updatepanel,

试试这个

<asp:TextBox ID="NonPass1" runat="server" TextMode="Password"></asp:TextBox> <asp:TextBox ID="NonPass2" runat="server" TextMode="Password" autopostback="True"></asp:TextBox> <div id="Div_Error" runat="server" visible="false" style="width:100%">
<asp:Label ID="Label1" class="errorMess" runat="server" Text="The Passwords do not match!!!"></asp:Label>

并在后面的代码中使用它:

Protected Sub NonPass2_TextChanged(ByVal sender As Object, ByVal e As EventArgs) Handles NonPass2.TextChanged If NonPass1.Text <> NonPass2.Text Then Div_Error.visible=true; Else Div_Error.visible=false; End If End Sub

答案 2 :(得分:0)

这是我在c#中使用的内容,也许你可以继承技术

    private void ClearTextBoxes()
    {
        Action<Control.ControlCollection> func = null;

        func = (controls) =>
        {
            foreach (Control control in controls)
                if (control is TextBox)
                    (control as TextBox).Clear();
                else
                    func(control.Controls);
        };

        func(Controls);
    }

然后调用cleartextboxes();

希望有所帮助:)

答案 3 :(得分:0)

您描述的行为的唯一合乎逻辑的原因可能是,您将上述密码框放在另一个UpdatePanel内。

因此,密码框将在回发时重新加载(textchanged事件),并且出于安全原因,在回发后,密码类型的TextBox不会保留其值。

但是,如果您不关心安全性,则可以通过每次回发发生时重新分配其值来“避免”在回发时清除密码文本框。只需在页面加载事件中包含以下代码即可。

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    NonPass1.Attributes.Add("value", NonPass1.Text)
    NonPass2.Attributes.Add("value", NonPass2.Text)
End Sub

答案 4 :(得分:0)

这是一个简单的例子:

<table class="mytable" cellspacing="0" style="width: 100%">
<tr>
<td> 
<asp:TextBox ID="Txt_Pass" runat="server" ></asp:TextBox>
</td>
<td>
<asp:TextBox ID="Txt_Re_Pass" runat="server" ></asp:TextBox>
</td>

<td width="66%" align="left"> 
<asp:Button ID="Btn_Filter" runat="server" Text=""  Height="22px" />

</td>

</tr>
</table>

<br />

<div  id="Div_Error" runat="server" visible="false" style="width:100%">
<asp:Label ID="lbl_Error" runat="server" class="msg">
</asp:Label>

</div>

在后面的代码中,使用:

Protected Sub Btn_Filter_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Btn_Filter.Click

If Trim(Txt_Re_Pass.Text) <> "" Then
Div_Error.Visible = False
if Txt_Pass.Text <> Txt_Re_Pass.Text then
Div_Error.Visible = True
lbl_Error.text="The Passwords do not match!!!""
else
Div_Error.Visible = False
End if
Else
Div_Error.Visible = True
lbl_Error.text="Please re enter your password"
End If

End Sub