【问题标题】:HTML5 form validation not working in ASP.NET Web FormHTML5 表单验证在 ASP.NET Web 表单中不起作用
【发布时间】:2016-10-20 13:51:29
【问题描述】:

我正在尝试做一个简单的项目,我可以在输入字段上使用所需的标签,这样我就可以实现即时表单验证。但是,我无法触发验证。我使用的是 IE11 和 Chrome 版本 53。参考:http://www.instantshift.com/2016/05/16/html5-form-validation-floating-input-label/

Site.Master

<!DOCTYPE html>
<html lang="en">
<head runat="server">
<meta charset="utf-8" />
<title><%: Page.Title %> - My ASP.NET Application</title>
<asp:PlaceHolder runat="server">     
      <%: Scripts.Render("~/bundles/modernizr") %>
</asp:PlaceHolder>  
<webopt:BundleReference runat="server" Path="~/Content/css" /> 
<link href="~/favicon.ico" rel="shortcut icon" type="image/x-icon" />
<meta name="viewport" content="width=device-width" />
<asp:ContentPlaceHolder runat="server" ID="HeadContent" />
</head>
<body>
<form runat="server">
<asp:ScriptManager runat="server">
    <Scripts>
        <%--Framework Scripts--%>
        <asp:ScriptReference Name="MsAjaxBundle" />
        <asp:ScriptReference Name="jquery" />
        <asp:ScriptReference Name="jquery.ui.combined" />
        <asp:ScriptReference Name="WebForms.js" Assembly="System.Web" Path="~/Scripts/WebForms/WebForms.js" />
        <asp:ScriptReference Name="WebUIValidation.js" Assembly="System.Web" Path="~/Scripts/WebForms/WebUIValidation.js" />
        <asp:ScriptReference Name="MenuStandards.js" Assembly="System.Web" Path="~/Scripts/WebForms/MenuStandards.js" />
        <asp:ScriptReference Name="GridView.js" Assembly="System.Web" Path="~/Scripts/WebForms/GridView.js" />
        <asp:ScriptReference Name="DetailsView.js" Assembly="System.Web" Path="~/Scripts/WebForms/DetailsView.js" />
        <asp:ScriptReference Name="TreeView.js" Assembly="System.Web" Path="~/Scripts/WebForms/TreeView.js" />
        <asp:ScriptReference Name="WebParts.js" Assembly="System.Web" Path="~/Scripts/WebForms/WebParts.js" />
        <asp:ScriptReference Name="Focus.js" Assembly="System.Web" Path="~/Scripts/WebForms/Focus.js" />
        <asp:ScriptReference Name="WebFormsBundle" />
        <%--Site Scripts--%>

    </Scripts>
</asp:ScriptManager>
<header>
    <div class="content-wrapper">
        <div class="float-left">
            <p class="site-title">
                <a runat="server" href="~/">your logo here</a>
            </p>
        </div>
        <div class="float-right">
            <section id="login">
                <asp:LoginView runat="server" ViewStateMode="Disabled">
                    <AnonymousTemplate>
                        <ul>
                            <li><a id="registerLink" runat="server" href="~/Account/Register.aspx">Register</a></li>
                            <li><a id="loginLink" runat="server" href="~/Account/Login.aspx">Log in</a></li>
                        </ul>
                    </AnonymousTemplate>
                    <LoggedInTemplate>
                        <p>
                            Hello, <a runat="server" class="username" href="~/Account/Manage.aspx" title="Manage your account">
                                <asp:LoginName runat="server" CssClass="username" /></a>!
                            <asp:LoginStatus runat="server" LogoutAction="Redirect" LogoutText="Log off" LogoutPageUrl="~/" />
                        </p>
                    </LoggedInTemplate>
                </asp:LoginView>
            </section>
            <nav>
                <ul id="menu">
                    <li><a runat="server" href="~/">Home</a></li>
                    <li><a runat="server" href="~/About.aspx">About</a></li>
                    <li><a runat="server" href="~/Contact.aspx">Contact</a></li>
                </ul>
            </nav>
        </div>
    </div>
</header>
<div id="body">
    <asp:ContentPlaceHolder runat="server" ID="FeaturedContent" />
    <section class="content-wrapper main-content clear-fix">
        <asp:ContentPlaceHolder runat="server" ID="MainContent" />
    </section>
</div>
<footer>
    <div class="content-wrapper">
        <div class="float-left">
            <p>&copy; <%: DateTime.Now.Year %> - My ASP.NET Application</p>
        </div>
    </div>
</footer>
</form>

此处使用的输入 默认.aspx

<asp:Content runat="server" ID="BodyContent" ContentPlaceHolderID="MainContent">

    <div>
        <label for="name">Name (required):</label>
        <input type="text" id="name" name="name" value="" required>
    </div>
    <div>
        <label for="email">Email (required):</label>
        <input type="text" id="email" name="email" value="" required="">
    </div>
</asp:Content>

【问题讨论】:

  • 请问你为什么不用RequiredFieldValidator控件?
  • @UmutEsen 我相信使用RequiredFieldValidator 它只会在回发/按钮点击正确时触发?我想在不点击按钮的情况下立即显示验证

标签: asp.net html validation


【解决方案1】:

无论您使用什么,您都需要一个事件来验证输入。 如果用户输入一个值,将其删除并远离输入,则以下操作将起作用。

<asp:TextBox ID="txtInput" runat="server" CausesValidation="True"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ValidationGroup="form" ControlToValidate="txtInput" ErrorMessage="Please provide a value" Display="Dynamic"></asp:RequiredFieldValidator>

知道何时验证输入后,使用Page_IsValid 函数检查表单在javascript 中是否处于有效状态。

请查看以下内容以使用 HTML5 元素进行验证:

    <label for="name">Name (required):</label>
    <input type="text" id="name" name="name" value="" required="" onblur="validate(this)" runat="server"/>

    <label for="email">Email (required):</label>
    <input type="text" id="email" name="email" value="" required="" onblur="validate(this)" runat="server"/>

    <script>

        function validate(input) {
            if (input.value.length === 0) {
                alert("Please provide a value in " + input.name + " input");
            }
        }
    </script>

【讨论】:

  • 有没有办法使用输入字段做完全相同的事情
  • 谢谢!这真的很有帮助
【解决方案2】:

请尝试以下操作:

<div>
    <label for="name">Name (required):</label>
    <input type="text" id="name" name="name" value=""
        required="required" runat="server">
</div>
<div>
    <label for="email">Email (required):</label>
    <input type="text" id="email" name="email" value=""
        required="required" runat="server">
</div>

【讨论】:

  • 这个改变不走运
  • 我没有提交按钮,我的理解是我可以使用即时表单验证,而无需使用 HTML5 提交按钮,对吗?
  • 如果您不提交表单,则无法进行验证。
  • 所以我唯一的选择是使用 javascript 来实现我想要实现的目标?
猜你喜欢
  • 1970-01-01
  • 2021-08-28
  • 2021-12-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-02
  • 2018-04-11
  • 2016-03-28
  • 1970-01-01
相关资源
最近更新 更多