【问题标题】:Numbers and Slash (Dates) only textbox asp.net仅限数字和斜线(日期)文本框 asp.net
【发布时间】:2018-04-02 08:04:49
【问题描述】:

我有一个包含姓名和日期的gridview。我还在 gridview 的标题上放置了一些文本框,可用于搜索。我希望我的文本框用于搜索日期,以限制用户输入除数字和斜线之外的其他字符。所以基本上,我想要一个只允许用户输入日期的文本框。它应该允许用户通过输入 Month(01-12)、Month and Day(01/13,12/30) 或 Month、Day、和年份(01/13/2018, 12/30/2018)...

我之前在文本框中使用了TextMode: Date,但它要求用户完成完整的mm/dd/yyyy 格式,这限制了用户只能使用月份或月份和日期进行搜索。我尝试了一些在互联网上找到的 javascript,但它不符合我的要求。任何帮助将不胜感激。

【问题讨论】:

    标签: c# asp.net regex


    【解决方案1】:

    请使用以下 javascript 来回答您的问题

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title></title>
    <style type="text/css">
            body
            {
              font-size: 9pt;
              font-family: Arial;
            }
        </style>
    </head>
    <body>
    Enter Date:
      <input type="text" id="text1" onkeypress="return IsValidData(event);" 
     ondrop="return false;"
        onpaste="return false;" />
    <span id="error" style="color: Red; display: none">* Invalid Character</span>
    <script type="text/javascript">
        var specialKeys = new Array();
        specialKeys.push(8); //Backspace
        specialKeys.push(9); //Tab
        specialKeys.push(46); //Delete
        specialKeys.push(36); //Home
        specialKeys.push(35); //End
        specialKeys.push(37); //Left
        specialKeys.push(39); //Right
        function IsValidData(e) {
            var keyCode = e.keyCode == 0 ? e.charCode : e.keyCode;
            var ret = ((keyCode >= 48 && keyCode <= 57) || (keyCode == 43) || (keyCode == 47) || (specialKeys.indexOf(e.keyCode) != -1 && e.charCode != e.keyCode));
            document.getElementById("error").style.display = ret ? "none" : "inline";
            return ret;
        }
    </script>
    

    如果此帖子回答了您的问题,请勾选绿色勾号。

    【讨论】:

    • 我将您的代码复制并粘贴到我的 aspx 页面中,但文本框上没有任何反应。
    • 嗯,我确实将您的代码复制并粘贴到我的页面上,以测试它一开始是否有效,但事实并非如此。我复制了从输入标记开始到脚本结束标记的行。
    • 只需创建一个新的示例 Web 应用程序并在 aspx 页面中替换。我尝试了同样的方法,它对我有用。请尝试分享反馈
    • 嗯。你是对的,它正在我的示例网页上工作。这很奇怪。我去看看我的主 aspx 页面。
    • 哦,天哪,这似乎是我的拼写错误。它现在正在工作。非常感谢。
    【解决方案2】:

    您可以使用相当宽容的 Parse:

    string s = "5/12";
    DateTime d = DateTime.Parse(s);
    
    // d will hold: 2018-12-05
    

    当然,将其包装在 try-catch 中。

    【讨论】:

      【解决方案3】:

      您可以使用asp:RegularExpressionValidator 来验证TextBoxText 属性。

      在下面的示例中,我使用了^\d{4}\/\d{2}\/\d{4}$ 正则表达式,它只允许根据需要使用带有斜杠的正数。

      <asp:TextBox ID="txt1" runat="server"/>
      <asp:RegularExpressionValidator ID="myRegex" 
                                      runat="server"     
                                      ErrorMessage="Invalid characters." 
                                      ControlToValidate="txt1"     
                                      ValidationExpression="^\d{4}\/\d{2}\/\d{4}$" />
      

      【讨论】:

      • 我输入了 05、05/12、05/12/2016,它们都是“无效字符”。而且,我想要的是限制用户输入除数字或斜线之外的任何内容。
      猜你喜欢
      • 2012-01-27
      • 2014-12-08
      • 2018-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多