【问题标题】:Form Input Type=Date and repeating display on .change表单输入类型=日期并在 .change 上重复显示
【发布时间】:2013-08-05 15:48:25
【问题描述】:

所以我有以下小提琴:http://jsfiddle.net/bmgh1985/XcScd/

我需要做的是当我输入日期时,它会通过这个 jQuery:

$('#headline').keyup(function () {
    $('#headlinedisp').text($('#headline').val());
});
$('#timestamp').change(function () {
    $('#timestampdisp').text($('#timestamp').val());
});
$('#news').keyup(function () {
    $('#newsdisp').text($('#news').val());
});

然后在下方显示预览。 在我开始使用“日期”类型之前,一切都很好。现在,当我输入 23/03/2013 之类的内容时,它会以 2013-03-23 的形式显示。这对我来说非常适合我将它粘贴到我的 SQL 表中,但希望通过稍微修改 jQuery 来实时显示它在显示框中的内容。

另外,我会有一些落后的人坚持使用 IE6、7、8,所以他们会看到一个标准文本框,他们会将 23/03/2013 输入到该文本框,它会正确显示为输出。我也不希望它搞砸(所以基本上,如果它的文本然后离开它。如果它是日期类型,将 .change 上的输出更改为正确的格式)。

【问题讨论】:

    标签: jquery forms


    【解决方案1】:

    无论输入类型和格式如何,我能想到的为您的日期实现一致的输出格式的最佳方法是从输入创建一个 javascript Date 对象,然后使用类似此答案Where can I find documentation on formatting a date in JavaScript? 的方法以实现所需的目标格式。

    当然,这仅适用于已完成的日期。如果您想在他们输入日期时重新​​格式化日期,您可能必须手动解析输入并将其重新组织成您想要的格式。

    【讨论】:

    • 谢谢。似乎可能是要走的路。使用 HTML5 中的日期框,无论如何更新 keyup 似乎都不能很好地发挥作用,而且我并不担心支持 IE 6/7/8,因为它也必须是即时的;)。将在接下来的一个小时左右对此进行测试,希望它可以工作。
    • 好的,我已经对其进行了调整以尝试使其正常工作,并且认为我怀疑它,但似乎不想真正将日期识别为数字,我得到了NaN/NaN/N 运行此版本的小提琴时:jsfiddle.net/bmgh1985/XcScd/3
    • 这一行var d = new Date('#timestamp'); 应该是var d = new Date($(this).val());
    • 啊,是的。总是忘记考虑使用它。还添加了一个例外,以允许单个数字日期/月份的形式为 0x 而不仅仅是 x。对于其他有类似问题的人,可以在这里(jsfiddle.net/bmgh1985/XcScd)找到完成的小提琴。谢谢@asymptoticFault
    • 不客气。很高兴我们能够为您找到解决方案:)
    猜你喜欢
    • 2017-11-27
    • 2015-09-02
    • 2013-05-24
    • 1970-01-01
    • 2015-09-14
    • 2019-07-11
    • 2021-03-28
    • 2022-11-21
    • 1970-01-01
    相关资源
    最近更新 更多