2013-05-01 62 views
0

我试图结合消息的自动打印事件以防万一密码不匹配。为此,我使用更新面板。更新面板自动清除文本框

错误消息打印完美我的问题是,两个文本框后自动创建。甚至认为我没有在代码中指定它。我不明白我做错了什么。

这是前端代码:

<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 
+0

你知道的形式回发后密码字段不会存留价值?如果你想比较两个密码,然后通过javascript并验证它。 – 2013-05-01 10:18:39

+0

我正在验证它在VB – meks 2013-05-01 10:32:51

回答

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> 
+0

警报消息将被打印?我特意告诉它不应该在单独的窗口中打印,但在文本框的下面 – meks 2013-05-01 10:17:17

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

+0

这不是一个答案,如果您不能评论,请不要使用“发布答案”而不是评论。 – 2013-05-01 10:16:33

+0

我的意思是说,Ater的错误信息被打印在两个密码被清除的框中。我不知道为什么,这是我试图避免 – meks 2013-05-01 10:19:43

+0

,如果我点击文本框外的密码和重复密码,他们的内容不见了,无论密码是否匹配。 – meks 2013-05-01 10:21:08

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();

希望像你描述,帮助:)

+0

谢谢。但这是我想要避免的。文本框被自动清除。但我想保留内容。 – meks 2013-05-01 10:31:20

+0

我不明白他们为什么被清除。无论如何,我没有在我的代码中指定它 – meks 2013-05-01 10:32:00

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 
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