zoukankan      html  css  js  c++  java
  • 验证控件输入是否为正整数,并不能为空

    验证控件输入是否为正整数,并不能为空。
    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 的验证结果。这个例子稍加改造可以变得更加的灵活和实用。 

  • 相关阅读:
    洛谷P3620 [APIO/CTSC 2007] 数据备份
    洛谷P2744 量取牛奶
    洛谷P1560 蜗牛的旅行
    luogu P1776 宝物筛选_NOI导刊2010提高(02)
    luogu P1020 导弹拦截
    luogu P2015 二叉苹果树
    luogu P1137 旅行计划
    树形dp瞎讲+树形dp基础题题解
    luogu P1252 马拉松接力赛 P1803 凌乱的yyy / 线段覆盖
    luogu P1196 [NOI2002]银河英雄传说
  • 原文地址:https://www.cnblogs.com/xieon1986/p/2576724.html
Copyright © 2011-2022 走看看