2015-08-09 32 views
4

动态生成的我与动态地生成的输入[类型=日期]格式值在PHP

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

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

问题出现在非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 ,所以我认为,它的东西与它。

UPDATE:

我使用这个代码把非HTML5兼容的浏览器日期选取器,这不是从数据库中检索日期,解决我的问题,但如果条款在某种程度上可以区别HTML5的浏览器。我想,也许我可以用这个条件来筛选jQuery代码(我正在寻找的代码)

<script> 
    $(function() { 
     if (!Modernizr.inputtypes['date']) { 
      $('input[type=date]').datepicker({ 
       dateFormat: 'mm/dd/yy' 
      }); 
     } 
    }); 
</script> 
+1

$(本).va(),而不是失踪$(this).attr('value') – mplungjan

+0

我看到了,但是无论哪种方式都可以获得价值,但是代码并没有被执行,当我把警报放入它时,它没有弹出。谢谢 – culebrin

+1

您可以使用HTMLInputElement.prototype中的'valueAsDate'来测试''支持'type =“date”' –

回答

1

尝试喜欢; 这是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

顺便说一下,在你的代码你的=登录型“日期”请纠正太:)

+0

嗨,我认为你击中了正确的位置。我很担心输入已经有价值(而其他一些则没有),而其他答案并没有指望这一点。但现在的问题是,我只能在不支持html5的浏览器中执行此操作,我认为Paul S.的评论会做到这一点,但我必须先尝试一下。 – culebrin

+0

嗨@culebrin我认为你可以检查这个链接的HTML5支持。 http://diveintohtml5.info/detect.html#input-types – Laky

0

在JavaScript中,你实际上可以在字符串中使用split。比传递Date对象要容易得多。

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

    var now = $(this).attr('value').split("-"); 
    var today = now[1]+"/"+now[2]+"/"+now[0]; //mm/dd/yyyy   
    $(this).val(today); 

}); 

split将使用分隔符将字符串转换为数组块。在这种情况下破折号。以下数组被创建:

['yyyy', 'mm', 'dd']; 

现在您可以重新排列这些数组件到所需的字符串中。

一个演示:

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

 
    var now = $(this).attr('value').split("-"); 
 
    var today = now[1]+"/"+now[2]+"/"+now[0]; //mm/dd/yyyy   
 
    $(this).val(today); 
 

 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="date" value="2015-08-09" />

+0

这段代码给我一个错误:“SyntaxError:missing:after property id”。我在猜测$('input [type =“date”]')。每行的语法都不正确 – culebrin

+1

不然你的原函数有一个bug。 'each'中缺少'function()'。 – Mouser