2

我在我的 ASP.Net 应用程序(VS 2017,.Net 框架 4.7)中使用 Tempus Dominus Bootstrap 4,版本 5.0.1 以及 Bootstrap 版本 4.5.0。

在我的付款页面中,在 aspx 部分中初始化 DateTimePicker 时,我正在设置 minDate 和 maxDate 选项。我还将格式设置为'DD/MM/YYYY hh:mm A'。在运行页面时,当我弹出 DateTimePicker 的日历控件并尝试使用鼠标选择 minDate 和 maxDate 范围之外的任何日期时,该控件正确地禁用了选择并阻止我选择任何无效的日期。但是,如果我使用键盘写入超出范围的任何无效日期,则控件不会对其进行验证,因此允许将无效日期传递给服务器端。我该如何阻止它这样做?

我正在使用moment.jsFontAwesome的更新版本。我也尝试过分别使用Tempus DominusmomentFontAwesome的最小和完整版本,但它显示的日期超出了 minDate 和 maxDate 的范围。我错过了什么还是一个固有的问题?

我的代码如下。

母版页aspx:

<%@ Master Language="C#" AutoEventWireup="true" CodeFile="User.master.cs" Inherits="User" %>

  <!DOCTYPE html>

  <html>

  <head runat="server">
    <!-- Required meta tags -->
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />

    <!-- JQuery references -->
    <script src="http://code.jquery.com/jquery-3.5.1.min.js" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script>

    <!-- Bootstrap CSS references -->
    <link href="Content/bootstrap.min.css" rel="stylesheet" />
    <link href="FontAwesome/css/all.css" rel="stylesheet" />
    <link href="FontAwesome/css/v4-shims.css" rel="stylesheet" />
    <link href="Content/tempusdominus-bootstrap-4.css" rel="stylesheet" />
    <link href="Content/CustomStyleSheet.css" rel="stylesheet" />

    <!--***** JQuery code *****-->
    <!-- After the DOM is ready to execute Javascript, add a click event to the Cart button. When the button is clicked, the user will be taken to the Cart.aspx page. -->
    <script>
      $(document).ready(function DocumentReady() {
        $("#btnCart").click(function btnCart_Click() {
          window.location.href = "/Cart.aspx";
        });
      });
    </script>
    <!--***** End *****-->

    <title>Responsive Website</title>
  </head>

  <body>
    <form id="form1" runat="server">
      <div>
        <!--***** Navigation Bar, Logo, Dropdown Menu *****-->
        <nav class="navbar fixed-top navbar-expand-lg navbar-light bg-light">
          <a class="navbar-brand" href="Default.aspx">
            <img src="Images/web.png" width="30" height="30" class="d-inline-block align-top" alt="Logo" /> Repsonsive Website
          </a>
          <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNavDropdown" aria-controls="navbarNavDropdown" aria-expanded="false" aria-label="Toggle navigation">
                    <span class="navbar-toggler-icon"></span>
                </button>
          <div class="collapse navbar-collapse" id="navbarNavDropdown">
            <ul class="navbar-nav float-right">
              <li class="nav-item active">
                <a class="nav-link" href="Default.aspx">Home<span class="sr-only">(current)</span></a>
              </li>
              <li class="nav-item">
                <a class="nav-link" href="#">About</a>
              </li>
              <li class="nav-item">
                <a class="nav-link" href="#">Contact</a>
              </li>
              <li class="nav-item dropdown">
                <a class="nav-link dropdown-toggle" href="#" id="navbarDropdownMenuLink" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
                                Products
                            </a>
                <div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
                  <a class="dropdown-item" href="Products.aspx">All Products</a>
                  <div class="dropdown-divider" role="separator"></div>
                  <label class="dropdown-header">Men's</label>
                  <a class="dropdown-item" href="#">Shirts</a>
                  <a class="dropdown-item" href="#">Pants</a>
                  <a class="dropdown-item" href="#">Denims</a>
                  <div class="dropdown-divider" role="separator"></div>
                  <label class="dropdown-header">Women's</label>
                  <a class="dropdown-item" href="#">Tops</a>
                  <a class="dropdown-item" href="#">Leggings</a>
                  <a class="dropdown-item" href="#">Denims</a>
                </div>
              </li>
              <li class="nav-item">
                <button id="btnCart" type="button" class="btn btn-primary navbar-btn">
                                Cart <span id="CartBadge" class="badge badge-light" runat="server"></span>
                            </button>
              </li>
              <li class="nav-item">
                <asp:Button ID="btnSignIn" runat="server" class="btn btn-light navbar-btn" Text="Sign In" OnClick="btnSignIn_Click" CausesValidation="False" />
                <asp:Button ID="btnSignOut" runat="server" class="btn btn-light navbar-btn" Text="Sign Out" Visible="false" OnClick="btnSignOut_Click" CausesValidation="False" />
              </li>
              <li class="nav-item">
                <asp:Button ID="btnSignUp" runat="server" class="btn btn-light navbar-btn" Text="Sign Up" OnClick="btnSignUp_Click" CausesValidation="False" />
              </li>
            </ul>
          </div>
        </nav>
        <!--***** End *****-->
        <div class="container midcontent">
          <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
          </asp:ContentPlaceHolder>
        </div>
      </div>
      <!--***** Footer *****-->
      <hr />
      <!-- Used to provide a separator between middle contents and footer. -->
      <footer>
        <div class="container">
          <div id="BackToTop" runat="server" class="float-right" visible="false"><a href="#">Back to top</a></div>
          <p>&copy; 2020 domainname.com &middot; <a href="Default.aspx">Home</a> &middot; <a href="#">About</a> &middot; <a href="#">Contact</a> &middot; <a href="#">Products</a></p>
        </div>
      </footer>
      <!--***** End *****-->
    </form>
    <!-- Optional JavaScript -->
    <!-- References: jQuery first, then Popper.js, then Bootstrap JS -->
    <script src="Scripts/jquery-3.0.0.min.js"></script>
    <script src="Scripts/umd/popper.min.js"></script>
    <script src="Scripts/bootstrap.min.js"></script>
    <script src="Scripts/moment.js"></script>
    <script src="Scripts/tempusdominus-bootstrap-4.js"></script>
  </body>

  </html>

支付页面aspx:

<%@ Page Title="" Language="C#" MasterPageFile="~/User.master" AutoEventWireup="true" CodeFile="Payment.aspx.cs" Inherits="Payment" %>

  <asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
    <script type="text/javascript">
      // Initialise DateTimePicker.
      $(function() {
        $('#DateTimePicker1').datetimepicker({
          minDate: "01/01/1753 12:00 AM",
          maxDate: "12/31/9999 11:59 PM",
          format: 'DD/MM/YYYY hh:mm A'
        });
      });

      // Test if txtPin is not blank, doesn't contain alphanumeric value and contains exactly six digits.
      function Client_ValidatePin(source, arguments) {
        arguments.IsValid = /^[0-9]{6}$/.test(arguments.Value);
      }
    </script>
    <div id="divAlert" role="alert" runat="server">
    </div>
    <div class="row">
      <div class="col-md-9">
        <h4>Payment</h4>
        <hr />
        <div class="form-group row">
          <asp:Label ID="Label1" runat="server" class="col-md-2 col-form-label" Text="Name:"></asp:Label>
          <div class="col-md-7">
            <asp:TextBox ID="txtName" class="form-control" runat="server" MaxLength="50"></asp:TextBox>
            <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" class="text-danger" ErrorMessage="Name is required!" ControlToValidate="txtName"></asp:RequiredFieldValidator>
          </div>
        </div>
        <div class="form-group row">
          <asp:Label ID="Label2" runat="server" class="col-md-2 col-form-label" Text="PIN:"></asp:Label>
          <div class="col-md-7">
            <asp:TextBox ID="txtPin" class="form-control" runat="server" MaxLength="6"></asp:TextBox>
            <asp:CustomValidator ID="PinValidator" runat="server" ControlToValidate="txtPin" ValidateEmptyText="true" ClientValidationFunction="Client_ValidatePin" OnServerValidate="PinValidator_ServerValidate" class="text-danger" Display="Static" ErrorMessage="A 6-digit number is required!"></asp:CustomValidator>
          </div>
        </div>
        <div class="form-group row">
          <asp:Label ID="Label3" runat="server" class="col-md-2 col-form-label" Text="Date/Time:"></asp:Label>
          <div class="col-md-7">
            <div class="input-group date" id="DateTimePicker1" data-target-input="nearest">
              <input type="text" name="DateTimeInput" class="form-control datetimepicker-input" data-target="#DateTimePicker1" />
              <div class="input-group-append" data-target="#DateTimePicker1" data-toggle="datetimepicker">
                <div class="input-group-text"><i class="fa fa-calendar"></i></div>
              </div>
            </div>
          </div>
        </div>
        <asp:Button ID="btnPay" runat="server" Text="Make Payment" OnClick="btnPay_Click" />
      </div>
    </div>
  </asp:Content>

4

0 回答 0