Firefox 输入类型 = 日期最小值未在最小有效月份打开

Posted

技术标签:

【中文标题】Firefox 输入类型 = 日期最小值未在最小有效月份打开【英文标题】:Firefox input type=date min not opening on minimum valid month 【发布时间】:2018-07-05 18:44:43 【问题描述】:

我不确定是否有办法解决这个问题,但是当您使用带有 input type="date" 属性的 input type="date" 时,Firefox 的播放效果不佳:它总是在 current 上打开日期选择器em> 月,而不是最小有效日期开始的月份。如果日期在未来,这尤其令人讨厌。

例如:

<input type="date" min="2021-08-04">

(请参阅 Firefox 中的 JSFiddle。)

用户必须手动滚动几个月,直到他们最终到达可用的那个。不太理想!

【问题讨论】:

日期选择器显示您输入的月份的日历。如果您在月份部分输入08,它将显示8月的日历, @ildflue 我真的不关注你 可以添加默认值吗? <input type="date" min="2021-08-08" value="2021-08-08"> 缺点是你必须添加一个默认值。 【参考方案1】:

绕过此行为的一种方法是按照 cmets 中的建议为输入设置一个值。除了在 html 中设置 value 属性,您可以尝试在用户单击输入并显示日期选择器时以编程方式设置它。

我认为focus/focusin 是用来捕捉的最佳事件,因为据我所知没有show/open em> input[type="date"] 上的事件。

在MDN page 上,事件部分仅提及changeinput

这是一个现场样本:

var dateControl = document.querySelector('input[type="date"]');
dateControl.addEventListener("focus", function()
  // You can add validation on value
  if( this.min && !this.value )
    this.value = this.min;
  
);
<input type="date" min="2021-08-08">

【讨论】:

谢谢,如果无法在本地告诉 FF,这似乎是最好的解决方案 w3schools.com/tags/att_input_min.asp "注意:min 属性不适用于 Internet Explorer 10+ 或 Firefox 中的日期和时间,因为 IE 10+ 和 Firefox 不支持这些输入类型。"这是你最好的镜头......【参考方案2】:

我知道这不是一个很好的解决方案,因为浏览器随时可能被欺骗。

但这也应该有效。

HTML:<input id="dateInput" type="date" min="2021-08-08">

如果是火狐可以识别客户端的浏览器,通过这个JS自动将日期改成最小:

if (navigator.userAgent.indexOf("Firefox") != -1) 
document.getElementById("dateInput").value = document.getElementById("dateInput").min; 

【讨论】:

【参考方案3】:

你可以使用 value 属性来设置默认值。

<input type="date" min="2021-08-04" value="2021-08-04">

【讨论】:

以上是关于Firefox 输入类型 = 日期最小值未在最小有效月份打开的主要内容,如果未能解决你的问题,请参考以下文章

输入值未在我传入 Intents 的另一个活动中更新

由于缺少引号,布尔值未在 MERN 堆栈中更新

输入类型 = 范围上的 onchange 事件在拖动时未在 Firefox 中触发

React JSX 将最小日期时间添加到 datetime-local 输入

在 Angular2 ngModel 值未在自定义指令的 onBlur 事件上更新

带有手动输入和动态最小日期的 jQuery UI 日期选择器