【问题标题】:html & js text field data (DD-MM-YYYY) validationhtml & js 文本字段数据 (DD-MM-YYYY) 验证
【发布时间】:2013-03-21 12:19:41
【问题描述】:

在我的表单中,我有一个文本字段,用户可以在其中输入日期。好习惯告诉我不要让用户在字段中放置除 dgit 和 '-' 符号以外的任何内容。

但是,我在实现此类功能时遇到了一些问题。到目前为止,我有一个只接受数字的字段。如果用户尝试输入字段字母,则该字母将被删除。但重点是创建(DD-MM-YYYY)format,因此字段必须接受“-”符号。

这是我的代码:

<input type="text" name="test3" placeholder='DD-MM-YYYY' onkeyup="if (/\D/g.test(this.value)) this.value = this.value.replace(/\D/g,'')"/>

我尝试将|\- 放入正则表达式,但没有成功。谁能指出我在哪里做错了?

【问题讨论】:

  • 不要重新发明轮子,很多人以前都这样做过,谷歌。
  • 我只是想这样做而不是使用单独的函数..
  • 使用正则表达式 /[^\d-]/g demo fiddle
  • 也看this post

标签: javascript html


【解决方案1】:

使用正则表达式

/^\d{4}-\d{2}-\d{2}$|[^\d-]|-\d{2}-\d*-/

你也可以

 **/^\d{4}-\d{2}-\d{2}$|[^\d-]|-\d{2}-\d*-/.test(input.value)** 

【讨论】:

    【解决方案2】:

    HTML5 为您提供了另一种方法:

    <input type="date" name="test3">
    

    不过,浏览器负责日期显示的格式。

    【讨论】:

      【解决方案3】:

      你可以试试

      <input type="text" name="test3" placeholder='DD-MM-YYYY' onkeyup="if (/[^\d-]/g.test(this.value)) this.value = this.value.replace(/[^\d-]/g,'')" onchange="validate(this)"/>
      
      function validate(el){
          var regex = /^(0?[1-9]|[12][0-9]|3[01])-(0?[1-9]|1[012])-\d{4}$/;
          if(!regex.test(el.value)){
              alert('invalid date');
              el.value = '';
          }
      }
      

      演示:Fiddle

      【讨论】:

        【解决方案4】:

        你可以用 HTML5 做到这一点

        查看我的 jsfidle:http://jsfiddle.net/H7tMZ/2/

        <form>
            <input type="text" name="date" pattern="\d{1,2}-\d{1,2}-\d{4}" placeholder="dd-mm-jjjj"/>
            <button type="submit"/>
        </form>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-07-06
          • 2015-10-30
          • 1970-01-01
          • 2014-04-30
          • 2017-04-07
          • 2011-02-12
          • 2020-02-24
          相关资源
          最近更新 更多