Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在“datetime local”元素中输入不完整的日期/时间值时,如何捕获这些值?_Javascript_Html_Datetime_Knockout.js - Fatal编程技术网

Javascript 在“datetime local”元素中输入不完整的日期/时间值时,如何捕获这些值?

Javascript 在“datetime local”元素中输入不完整的日期/时间值时,如何捕获这些值?,javascript,html,datetime,knockout.js,Javascript,Html,Datetime,Knockout.js,Knockout提供了textInput绑定,用于立即更新可观测值,而不是在元素值更改时(仅在元素模糊时发生)。不幸的是,在Chromium中,当输入类型为datetime local时,这不起作用 我正在尝试编写一个自定义绑定,它模仿textInput行为;我需要能够在用户输入时获得datetime local元素的工作值 铬对这种元素的行为很奇怪。input事件仅在输入完整日期和时间后发生。更重要的是,如果输入在输入完整日期之前失去焦点,该值将保持为空,就好像根本没有输入任何内容一样 另外,

Knockout提供了
textInput
绑定,用于立即更新可观测值,而不是在元素值更改时(仅在元素模糊时发生)。不幸的是,在Chromium中,当输入类型为
datetime local
时,这不起作用

我正在尝试编写一个自定义绑定,它模仿
textInput
行为;我需要能够在用户输入时获得
datetime local
元素的工作值

铬对这种元素的行为很奇怪。
input
事件仅在输入完整日期和时间后发生。更重要的是,如果输入在输入完整日期之前失去焦点,该值将保持为空,就好像根本没有输入任何内容一样

另外,在我的情况下,用完整有效的值初始化元素不是一个选项,因为我需要区分实际输入的日期/时间值和空白值

以下是我正在编写的代码供参考:

ko.bindingHandlers.date = {
    init: (element, valueAccessor) => {
        ko.utils.registerEventHandler(element, "input", () => {
            var value = valueAccessor();
            if (!!element.value) {
                value(new Date(element.value).toISOString());
            } else {
                value("");
            }
         });
    },
    update: (element, valueAccessor) => {
        var value: any = ko.utils.unwrapObservable(valueAccessor());
        var output: any = "";
        if (!!value) {
            output = value.toISOString();
        }
        element.value = output;
    }
};

我遇到了同样的问题。虽然这对你的情况可能没有帮助,但我已经考虑过将日期和时间分开,这样,如果他们碰巧输入日期,至少你会得到日期。

KO还提供了值绑定。将其与[type=text]输入一起使用(不使用
valueUpdate
)将在模糊事件上更新绑定的观察值。
绑定不起作用。我想立即更新观测值,而不仅仅是在模糊之后。我还想将它用于
[type=datetime local]
。这是一个很好的解决方法建议。不幸的是,在我正在进行的特定项目中,它对我来说太昂贵了。