【问题标题】:Can I do a Date Check on a TextBox with a onBlur event?我可以使用 onBlur 事件对 TextBox 进行日期检查吗?
【发布时间】:2009-07-01 19:22:25
【问题描述】:

我想通过 onBlur 事件对 TextBox 进行日期检查。我不确定如何在 aspx 端检查 javascript 中的文本框。这就是我目前所拥有的

TodayDate= new Date();
function checkEnteredDate() {
if (document.getElementById('txtDate') > TodayDate) {
alert("You cannot select a date later than today.");
document.getElementById(TodayDate);
} 
}

这已经是一个 javascript 函数,我只是无法获取文本框中的值进行比较。 有什么建议吗?

【问题讨论】:

    标签: c# .net asp.net javascript


    【解决方案1】:

    您可以尝试将“this”传递给函数:

    <asp:TextBox ID="Text1" onblur="CheckEnteredDate(this);" runat="server" />
    

    编辑:以下是 javascript 函数的使用方式(大致):

    function CheckEnteredDate(passed) {
        if (new Date(passed.value) > new Date()) {
            alert('Date greater than today');
        }
    }
    

    【讨论】:

    • 对不起,习惯的力量。 :) 更正了我的例子。
    • Date() 构造函数期望自 1970 年以来的毫秒数。你真的认为用户会输入它吗?!
    • @Josh Stodola - 不,尝试传入一个字符串:document.write(new Date("12 Jan 2007 12:15"));将在我的浏览器上输出 2007 年 1 月 12 日星期五 12:15:00 GMT+0000(GMT 标准时间)。
    • 你在说什么?这:警报(新日期('1/1/2009').toString());显示“2009 年 1 月 1 日星期四 00:00:00 CST”
    【解决方案2】:

    像这样使用DateJs 库在客户端进行日期验证...

    function checkEnteredDate() {
      var elem = document.getElementById('txtDate');
    
      if(Date.parse(elem.value) > Date.today()) {
          alert("You cannot select a date later than today.");
          elem.select();
      }
    }
    

    【讨论】:

      【解决方案3】:

      如果您使用的是 Microsoft Ajax,则日期解析已由提供的 javascript 参考库处理。

      <asp:TextBox ID="Text1" onblur="CheckEnteredDate(this);" runat="server" />
      

      然后在函数调用上:

      function CheckEnteredDate(passed) {
          var value = Date.parseLocale(passed.value, 'd');
          if (isNaN(value))
              alert('Not a valid date.');
          if (value > new Date())
              alert('You cannot select a date later than today.');
      }
      

      【讨论】:

        【解决方案4】:

        您应该能够将对此的函数调用添加到文本框的 onBlur 事件中。

        【讨论】:

        • 该函数已被触发。我只是不知道如何调用文本框中的内容
        【解决方案5】:

        当您将文本框传递给 document.getElementById 时,它会返回一个 HTML 对象,而不是文本框内的文本。使用 value 属性获取用户输入的值。见下文:

        function checkEnteredDate() 
        {
            var inputDate = document.getElementById('txtDate');
            if(inputDate == '')
            {
                alert('You must specify date.');
                return false;
            }
        
            inputDate = new Date(inputDate);
            var today = new Date();
            today.setHours(0, 0, 0, 0); //By default today's date will have time portion as well.
        
            if(inputDate > today)
            {
                alert('You can not select a date later than today');
                return false;
            }
        
            return true;
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-07-08
          • 2015-01-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多