首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >验证两个控件(CustomValidator)

验证两个控件(CustomValidator)
EN

Stack Overflow用户
提问于 2013-04-20 03:02:42
回答 3查看 10.5K关注 0票数 4

在提交表单之前,我需要测试和( txtA + txtB)是否大于100。是否可以使用CustomValidator执行此操作,因为我不知道是否可以选择控件中的2个文本框来验证

代码语言:javascript
复制
<asp:TextBox ID="txtA" runat="server"></asp:TextBox>
<asp:TextBox ID="txtB" runat="server"></asp:TextBox>
<asp:CustomValidator ID="CustomValidator2" 
                     runat="server" 
                     ErrorMessage="CustomValidator" />

<asp:Button ID="Button1" runat="server" Text="Button" />

谢谢。

EN

回答 3

Stack Overflow用户

发布于 2013-04-20 03:10:17

您可以执行以下操作:

代码语言:javascript
复制
<asp:TextBox ID="txtA" runat="server" /> 
<asp:TextBox ID="txtB" runat="server" />
<asp:CustomValidator ID="CV1"runat="server" 
    OnServerValidate="ServerValidation" 
    ErrorMessage="Sum is less than 100" />

代码隐藏:

代码语言:javascript
复制
protected void ServerValidation(object source, ServerValidateEventArgs args)
{
    args.IsValid = int.Parse(txtA.Text)+ int.Parse(txtB.Text) >100;
}
票数 9
EN

Stack Overflow用户

发布于 2016-11-29 23:59:55

在页面中放置自定义验证时,可以将验证程序链接到控件,但如果要对多个控件执行多个验证,则需要包括以下属性

代码语言:javascript
复制
 OnServerValidate="MyMethodOnServerSide" 

并在服务器端定义该方法

代码语言:javascript
复制
protected void MyMethodOnServerSide(object source, ServerValidateEventArgs args)
{
     if (string.IsNullOrEmpty(mytxt1.Text) &&
            string.IsNullOrEmpty(mytxt2.Text))
            {
                args.IsValid = false;
                return;
            }

            args.IsValid = true;
}

只需将args.IsValid属性指定为所需的值。另一方面,验证是在加载页面之前完成的,因此,如果您单击了一个按钮,该按钮执行的操作类似于在一切正常的情况下从DB读取值,那么在该操作中,您需要包括以下检查。

代码语言:javascript
复制
protected void cmdSearch_Click(object sender, EventArgs e)
{
    if (Page.IsValid)
    {
          LoadDataFromDB();
    }
}

args.IsValid为false时,Page.IsValid也为false。希望这能有所帮助

票数 1
EN

Stack Overflow用户

发布于 2013-04-20 03:14:23

您需要添加另一个控件<asp:HiddenField>,然后利用jQuery来设置该控件的值。它可能看起来像这样:

标记

代码语言:javascript
复制
<asp:HiddenField ID="SumOfValues" />
<asp:CustomValidator ID="CustomValidator2"
    runat="server"
    ErrorMessage="CustomValidator"
    ControlToValidate="SumOfValues" />

JQUERY

代码语言:javascript
复制
$(document).ready(function() {
    $('#txtA').change(sumValues);
    $('#txtB').change(sumValues);
});

function sumValues() {
    var val1 = $('txtA').value();
    if (val1 === undefined) { val1 = 0; }

    var val2 = $('txtB').value();
    if (val2 === undefined) { val2 = 0; }

    $('#SumOfValues').value(val1 + val2);
}

这样你就可以验证隐藏的控件了。但是,您需要确保在所有三个控件上执行的一件事是利用ClientIDMode并将其设置为Static,这样当它们到达页面时,名称就是您在标记中指定的名称。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16111763

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档