【问题标题】:How to compare multiple textboxes and fire validator if they arent equal c#如果它们不相等,如何比较多个文本框并触发验证器c#
【发布时间】:2014-06-09 08:15:26
【问题描述】:

我遇到的问题是我需要一种方法来比较用户输入的 4 个文本框的值与用户输入的另外 6 个文本框的值。如果它们不匹配,则触发验证以停止进度。我使用一个名为“lblH1”的标签来显示它们需要匹配文本框。是否可以使用比较验证器或游侠验证器控件来执行此操作?

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";
}

【问题讨论】:

  • 您想在客户端还是服务器端验证它?你想用 JavaScript 来做吗?
  • 您要验证文本框中的值还是这些值的总和?在你比较总和的代码中。
  • 对不起,如果可以的话,服务器端 - 真的不知道足够的 Javascript
  • 是的,我想从 4 个文本框 (h1_total) 中获取总和,并将其与 6 个文本框 (H2A_total) 进行比较,看看它们是否匹配
  • @wubblyjuggly 那么你的代码有什么问题,如果你想在服务器端验证它就可以了。

标签: c# asp.net comparevalidator


【解决方案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('&lt;%= txtH2A_6.ClientID %&gt;')等。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-28
    • 1970-01-01
    • 1970-01-01
    • 2020-06-13
    • 1970-01-01
    • 2015-10-14
    • 1970-01-01
    • 2020-02-20
    相关资源
    最近更新 更多