【问题标题】:How do I put a min and max value in an input text for a custom date如何在自定义日期的输入文本中输入最小值和最大值
【发布时间】:2017-06-08 13:53:15
【问题描述】:

我想知道如何在输入文本中为日期添加最小值和最大值。 我想要的格式是:dd/mm/yyyy

所以我在输入中添加了一个 maxlenght,并在用户输入 2 个数字后自动添加了“/”。

当我测试它时,一切都很好,但我仍然可以写“67/34/8888”而不是正确的日期。

这是我的代码:

<form method="post" action="#" id="formStep2">
<input type="text" id="txtDate" class="selector" placeholder="dd/mm/yyyy" maxlength="10" required />
</form>

<script>
$(document).ready(function() {
    $("#txtDate").keyup(function(){
        if ($(this).val().length == 2){
            $(this).val($(this).val() + "/");
        }else if ($(this).val().length == 5){
            $(this).val($(this).val() + "/");
        }
    });
});
</script>

是否可以添加类似的内容:

 if ($(this).val().length == 2 && $(this).val().min == 1 && $(this).val().max == 31){...}

非常感谢您的帮助

【问题讨论】:

  • 使用日期选择器?另外,缓存$(this) 并重用它。 $(this) 对象的创建是一个比较繁重的操作。执行一次let $this = $(this) 并重复使用$this
  • if ($(this).val().length == 2 &amp;&amp; $(this).val().length &gt;= 1 &amp;&amp; $(this).val().length &lt;= 31){...} 编辑:只是逻辑,虽然当然有更好的方法来做到这一点..
  • 嗨 Jeremy,非常感谢您对 $(this) 的建议!我会看看我可以用日期选择器做什么
  • 嗨,yezzz,谢谢你的回答,看起来很简单,我会测试一下:)
  • 这不是你需要的逻辑,我只插入了有效代码。要添加到 Jeremy 的答案,您也可以只使用一个 var,例如 var x = $(this).val().length; if (x == 2 &amp;&amp; x &gt;= 1 &amp;&amp; x &lt;= 31){...}

标签: javascript date input


【解决方案1】:

你应该使用type="date":

&lt;input type="date" min="1970-01-01" max="2017-06-08" required&gt;

【讨论】:

  • 嗨 André,谢谢您的回答,我想避免使用“type=date”,因为我认为格式是 mm/dd/yyyy,而且我被禁止使用日历(喜欢 datepicker) 但似乎我别无选择,使用类型 date 显然更好。谢谢你:)
  • 格式基于操作系统区域设置,您应该尊重它作为良好的 UX 居民。
  • 根据MDN(和测试),输入类型日期不被很好地支持,特别是在桌面浏览器中。
猜你喜欢
  • 1970-01-01
  • 2013-11-15
  • 2021-04-26
  • 1970-01-01
  • 2019-10-26
  • 2018-03-16
  • 1970-01-01
  • 2013-10-09
  • 2021-07-18
相关资源
最近更新 更多