我有一个带有动态生成的值的输入

<input name="etd" type"date" value="<?php echo $row[0]; ?>">

为了支持html5日期输入,将日期格式yyyy-mm-dd分配给该值,并在html5浏览器中正确显示mm/dd/yyyy格式。

在非html5浏览器上会出现问题,在该浏览器上,分配的值直接显示为文本(格式yyyy-mm-dd)。我尝试使用jQuery将这个值转换为mm/dd/yyyy格式,如下所示:
<script>
    $('input[type="date"]').each({

        var now = new Date($(this).attr('value'));
        var day = ("0" + now.getDate()).slice(-2);
        var month = ("0" + (now.getMonth() + 1)).slice(-2);
        var today = now.getFullYear()+"-"+(month)+"-"+(day);
        $(this).val(today);

    });
</script>

但不起作用,我是jQuery的新手,所以我认为这与它有关。

更新:

我正在使用此代码在不支持html5的浏览器上放置日期选择器,这不能解决我从数据库中检索到的日期的问题,但是if子句可以以某种方式可以改变html5浏览器。我想也许我可以使用该条件来过滤jQuery代码(我正在寻找的代码)
<script>
    $(function() {
        if (!Modernizr.inputtypes['date']) {
            $('input[type=date]').datepicker({
                dateFormat: 'mm/dd/yy'
            });
        }
    });
</script>

最佳答案

尝试一下;
这是Fiddle link

HTML:

<input name="etd" type="date" value="1919-03-12">

Js:
$( document ).ready(function() {

    $('input[type=date]').each(function (this){

       var datestring = $(this).val();
       var dateobj    = new Date(datestring);

       var formattedstring = dateobj.getUTCDate()+"/"+dateobj.getUTCMonth()+"/"+dateobj.getUTCFullYear();

       $(this).val(formattedstring);

    });

});

另外请注意,当您设置日期值时,对于单个值,其前面应为零。例如,第7个月应为07。

顺便说一句,在您的代码中,您缺少 = 登录类型“日期” 的情况,请也改正它:)

09-11 19:01
查看更多