Как сравнить несколько текстовых полей и огонь валидатора, если они не равны C#

У меня проблема в том, что мне нужен способ сравнить значения из 4 текстовых полей, введенных пользователем, с другими 6 текстовыми полями, введенными пользователем. Если они не совпадают, запустите проверку, чтобы остановить прогресс. Я использую метку с именем 'lblH1', чтобы показать, что они должны соответствовать текстовым полям. Можно ли использовать для этого средства сравнения validator или ranger validator?

h1_total = Convert.ToInt32(txtKS_1.Text) + Convert.ToInt32(txtKS_2.Text) + 
           Convert.ToInt32(txtKS_3.Text) + Convert.ToInt32(txtKS_4.Text);

H2A_total = Convert.ToInt32(txtH2A_1.Text) + Convert.ToInt32(txtH2A_2.Text) + 
            Convert.ToInt32(txtH2A_3.Text) + Convert.ToInt32(txtH2A_4.Text) +
            Convert.ToInt32(txtH2A_5.Text) + Convert.ToInt32(txtH2A_6.Text);

if (h1_total == H2A_total)
{ 
    //save
}
else
{
    lblH1.Visible = true;
    lblH1.Text= "Values must match";
}

1 ответ

Решение

Ты можешь попробовать CustomValidator для этого, как показано ниже

<head runat="server">
    <title></title>
    <script>
        function validate(sender, arg) {
            debugger;
            var h1_total =
                (document.getElementById("txtKS_1").value == "" ? 0 : parseFloat(document.getElementById("txtKS_1").value)) +
                (document.getElementById("txtKS_2").value == "" ? 0 : parseFloat(document.getElementById("txtKS_2").value)) +
                (document.getElementById("txtKS_3").value == "" ? 0 : parseFloat(document.getElementById("txtKS_3").value)) +
                (document.getElementById("txtKS_4").value == "" ? 0 : parseFloat(document.getElementById("txtKS_4").value));

            var H2A_total =
                (document.getElementById("txtH2A_1").value == "" ? 0 : parseFloat(document.getElementById("txtH2A_1").value)) +
                (document.getElementById("txtH2A_2").value == "" ? 0 : parseFloat(document.getElementById("txtH2A_2").value)) +
                (document.getElementById("txtH2A_3").value == "" ? 0 : parseFloat(document.getElementById("txtH2A_3").value)) +
                (document.getElementById("txtH2A_4").value == "" ? 0 : parseFloat(document.getElementById("txtH2A_4").value)) +
                (document.getElementById("txtH2A_5").value == "" ? 0 : parseFloat(document.getElementById("txtH2A_5").value)) +
                (document.getElementById("txtH2A_6").value == "" ? 0 : parseFloat(document.getElementById("txtH2A_6").value));

            if (h1_total != H2A_total)
                arg.IsValid = false;
            else
                arg.IsValid = true;
        }

    </script>
</head>
<body>
    <form id="form1" runat="server">
        <div>

            <asp:TextBox runat="server" ID="txtKS_1" ClientIDMode="Static" />
            <asp:TextBox runat="server" ID="txtKS_2" ClientIDMode="Static" />
            <asp:TextBox runat="server" ID="txtKS_3" ClientIDMode="Static" />
            <asp:TextBox runat="server" ID="txtKS_4" ClientIDMode="Static" />
            <br />
            <asp:TextBox runat="server" ID="txtH2A_1" ClientIDMode="Static" />
            <asp:TextBox runat="server" ID="txtH2A_2" ClientIDMode="Static" />
            <asp:TextBox runat="server" ID="txtH2A_3" ClientIDMode="Static" />
            <asp:TextBox runat="server" ID="txtH2A_4" ClientIDMode="Static" />
            <asp:TextBox runat="server" ID="txtH2A_5" ClientIDMode="Static" />
            <asp:TextBox runat="server" ID="txtH2A_6" ClientIDMode="Static" />
            <br />
            <asp:CustomValidator runat="server" ID="vali1" ErrorMessage="Values must be same." ClientValidationFunction="validate" ValidationGroup="validate" />
            <asp:Button runat="server" ID="btn" Text="Click me" ValidationGroup="validate" />
        </div>
    </form>
</body>

Что следует отметить:

я использовал ClientIDMode="Static" просто для того, чтобы сделать код компактным, пожалуйста, игнорируйте его, если можете, и используйте document.getElementById('<%= txtH2A_6.ClientID %>') и т.п.

Другие вопросы по тегам