验证控件输入是否为正整数,并不能为空

验证控件输入是否为正整数,并不能为空。
asp:RegularExpressionValidator只能验证正则,正则是无法判定空值的。我们可以通过增加一个验证控件asp:RequiredFieldValidator来判断是否为空。

 以下代码:

 <script type="text/javascript" language="javascript" >

function checkBeforeSubmit(frm){           ///判断RegularExpressionValidator触发

        if(!Page_Validators || Page_Validators.length == 0){
            return;
        }
       
        for(var i=0; i<Page_Validators.length; i++){
            validator = Page_Validators[i];
            if(!validator.isvalid){
                alert(validator.errormessage);
            }
        }
    }
</script>

<asp:textbox id="every_page_count" runat="server" Width="20px" Font-Size="Small" Height="15px">50</asp:textbox>

<asp:RegularExpressionValidator ID="RegularExpressionValidator1" ControlToValidate="every_page_count" ValidationExpression="^[1-9]{1}[\d]*$" runat="server" Display="None" ErrorMessage="请输入正确的数字。"></asp:RegularExpressionValidator>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="every_page_count" Display="None" ErrorMessage="请输入正确的数字。"></asp:RequiredFieldValidator>
<asp:Button ID="B_BC" runat="server" Text="查询" Width="60px" OnClick="B_BC_Click" OnClientClick="checkBeforeSubmit(this.form)"/>

参考了原文:

ASP.NET 提供了几个有用的Validator:RequiredFieldValidator、RegularExpressionValidator、RangeValidator、CompareValidator,利用这些无疑可以简化我们的代码,不过,在网上经常会有人提到,怎么样让Validator信息不是在网上显示,而是用alert窗口弹出呢?看了网上的一些回答都不如人意。其实要实现这一点,可以非常的简单,请看下面这段代码
-------------------------------------------------------------------

?/P>

<%@ Page Language="C#" CodeBehind="Default.aspx.cs" Inherits="HelloWroldWeb._Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >


<head runat="server">
    <title>Untitled Page</title>
    <script language = "javascript" type="text/javascript">
    function checkBeforeSubmit(frm){
        if(!Page_Validators || Page_Validators.length == 0){
            return;
        }
       
        for(var i=0; i<Page_Validators.length; i++){
            validator = Page_Validators[i];
            if(validator.validationGroup == "VG" && !validator.isvalid){
                alert(validator.errormessage);
            }
        }
    }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        &nbsp;
        <asp:TextBox ID="TextBox1" runat="server" ToolTip="input here!" ValidationGroup="VG" CausesValidation="True"></asp:TextBox>
        <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="TextBox1"
            ErrorMessage="this field can not be empty!!!" OnPreRender="RequiredFieldValidator1_PreRender"
            SetFocus ValidationGroup="VG" Display="None">required</asp:RequiredFieldValidator>
        <asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ControlToValidate="TextBox1"
            Display="None" ErrorMessage="this box can input number only." ValidationExpression="[0-9]+"
            ValidationGroup="VG">Number only</asp:RegularExpressionValidator><br />
        <asp:Button ID="Button1" runat="server" Text="Click Me" ToolTip="Come on" OnClientClick='checkBeforeSubmit(this.form)' ValidationGroup="VG" />&nbsp;<br />
        <br />
        </div>
    </form>
</body>
</html>

----------------------------------------------------------------

 

在这段代码中,所有的东西都是编辑器自动生成,除了前面那一小段javascript代码。这段代码只有一个方法checkBeforeSubmit,它在Button1的OnClientClick属性中被设置,参数this.form没有作用,但是如果你需要一些其它的操作的话,或许有用。在方法checkBeforeSubmit中用到了Page_Validators数组,这个数组在页面加载的时候被构造,遍历这个数据,然后通过validationGroup 和isvalid属性来判断是否属于特定的组以及是否满足验证,如果不满足验证,则弹出错误信息。事实上,你也可以通过直接访问 RequiredFieldValidator1isvalid 来得到某个特定的validator 的验证结果。这个例子稍加改造可以变得更加的灵活和实用。 

原文地址:https://www.cnblogs.com/xieon1986/p/2576724.html