Sunday, April 1, 2012

Validate mutually exclusive text boxes

Solution1
//ASPX <asp:UpdatePanel runat="server">
  <ContentTemplate>
  <asp:TextBox ID="txt1" runat="server" OnTextChanged="TextBoxOnTextChanged"></asp:TextBox>
<asp:RequiredFieldValidator ID="rfvTxt1" runat="server" ControlToValidate="txt1" .....></<asp:RequiredFieldValidator>
<asp:TextBox ID="txt2" runat="server"OnTextChanged="TextBoxOnTextChanged"></asp:TextBox> <asp:RequiredFieldValidator ID="rfvTxt2" runat="server" ControlToValidate="txt2" .....></<asp:RequiredFieldValidator>
<ContentTemplate> </asp:UpdatePanel>

//CS protected void TextBoxOnTextChanged(object sender, EventArgs e) { string SrcTxtId = ((TextBox)sender).ID; switch(SrcTxtId) { case "txt1": rfvTxt2.Enabled = false; case "txt2": rfvTxt1.Enabled = false; } } //Note: This way by default both the validators will be active but as soon as u enter something in textbox1..

Solution2
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script type="text/javascript">
        function ValidateTextBoxes() {
            var TextBox1 = document.getElementById('<%= TextBox1.ClientID %>');
            var TextBox2 = document.getElementById('<%= TextBox2.ClientID %>');
            if (TextBox1.value == "" && TextBox2.value == "") {
                alert('Please enter atleast one value');
                return false;
            }
            if (TextBox1.value != "" && TextBox2.value != "") {
                alert('Please enter only one value');
                return false;
            }
            return true;
        }       
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
    &nbsp;
    <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
    <br />
    <asp:Button ID="Button1" runat="server" Text="Save" OnClick="Button1_Click" OnClientClick=" return ValidateTextBoxes();" />
    </form>
</body>
</html>

No comments:

Post a Comment