gpt4 book ai didi

javascript - 如何捕获在 `datetime-local` 元素中输入的不完整日期/时间值?

转载 作者:行者123 更新时间:2023-11-27 22:46:49 26 4
gpt4 key购买 nike

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

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

Chromium 对这种元素的行为很奇怪。 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;
}
};

最佳答案

我也遇到了同样的问题。尽管它可能不一定对您的情况有帮助,但我考虑过将日期分为 datetime,所以至少您会得到 date 如果它们碰巧进入了。

关于javascript - 如何捕获在 `datetime-local` 元素中输入的不完整日期/时间值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38358578/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com