【发布时间】:2020-09-29 17:02:12
【问题描述】:
我没有使用 knockout.js 的经验。我继承了一个使用淘汰赛和 C# ASP.NET 混合的预订表格。我们最近将数据库升级到了最新版本的 MySQL,与旧版本相比,它对输入日期的格式更加讲究。在大多数情况下,我可以通过调整 C# 或 SQL 来解决这个问题,但在表单的一部分中我还没有找到解决方案。日期以 dd/mm/yyyy 格式预填充在表单输入中。我想将其更改为 yyyy-mm-dd 以便我可以使用日期输入而不是文本输入
有两个表单输入看起来像这样
<input type="text" size="10" maxlength="10" class="normaltext" data-bind="attr:{id:'returnDate-'+Id},value:FlightInfo.ReturnDate, enable:$root.FlightsAdvanced() == 'true' && !FlightInfo.OwnFlight()">
显然,另一个是出发日期。它们似乎是从 javascript 文件中的以下函数填充的。
function FlightInfo(depDate, retDate) {
this.OwnFlight = ko.observable(false);
this.FirstCode = ko.observable("");
this.SecondCode = ko.observable("");
this.DepartureDate = ko.observable(depDate);
this.ReturnDate = ko.observable(retDate);
this.ReqTransferIn = ko.observable(0);
this.ReqTransferOut = ko.observable(0);
}
如果我将 ko.observable(retDate) 替换为硬编码日期,例如 2020-09-09,然后提交表单,那么它可以工作,但是如果我将相同的日期直接硬编码到文本输入中而不是 value:FlightInfo.ReturnDate 然后它没有 - 表单从敲除中获取错误格式的日期并引发错误。
我已尝试按照this question 中的建议使用 moment.js,但它对我不起作用。如何将 depDate 和 retDate 重新格式化为 yyyy-mm-dd
【问题讨论】:
标签: javascript knockout.js webforms