如何区分 datetime-local 类型的部分填充或无效输入与空输入?

Posted

技术标签:

【中文标题】如何区分 datetime-local 类型的部分填充或无效输入与空输入?【英文标题】:How to tell apart partially filled or invalid input of type datetime-local from the empty one? 【发布时间】:2018-08-28 09:48:04 【问题描述】:

有没有办法知道用户在datetime-local 类型的<input> 中输入了无效的日期和/或时间,而不是他没有输入任何内容?

我想将无输入视为用户想要重置/删除正在编辑的日期时间。

我正在使用来自 AngularJS 的 input['datetime-local'] – https://docs.angularjs.org/api/ng/input/input%5Bdatetime-local%5D。

【问题讨论】:

Is it possible to know if an input type = datetime-local is halfway filled?的可能重复 那个问题的答案是不充分的。单独的“badInput”并不能为您提供您所追求的三种状态。 【参考方案1】:

您可以像这样检查本地日期时间的状态:

<input id="dte" type="datetime-local">

<script>
    var myDate = document.getElementById("dte");
    myDate.addEventListener("blur", function() 
        console.log("valueMissing : " + myDate.validity.valueMissing);
        console.log("badInput : " + myDate.validity.badInput);
        console.log("valid : " + myDate.validity.valid);
        console.log("value : " + myDate.value);
    );
</script>

您可以检查其他值,但这些值应该符合您提到的要求:

未输入值:

valid == false &amp;&amp; badInput == false &amp;&amp; valueMissing == false &amp;&amp; value == ''

输入的值(但无效):

valid == false &amp;&amp; badInput == true &amp;&amp; valueMissing == false &amp;&amp; value == ''

输入的值(且有效):

valid = true &amp;&amp; badInput == false &amp;&amp; valueMissing = false &amp;&amp; value == 'whatever date you entered'

【讨论】:

以上是关于如何区分 datetime-local 类型的部分填充或无效输入与空输入?的主要内容,如果未能解决你的问题,请参考以下文章

如何显示输入类型 =“datetime-local”的值?

角度输入类型 datetime-local

将类型为 datetime-local 的输入绑定到 Angular 2 中的 Date 属性

将 datetime-local 类型的表单数据发布到 sql 表 datetime 字段

如何从jQuery中的Datetime-local获取值?

如何添加占位符 <input type="datetime-local"> 字段?