input[type=date] 格式值在 php 中动态生成
input[type=date] format value dynamically generated in php
我有一个动态生成值的输入
<input name="etd" type"date" value="<?php echo $row[0]; ?>">
为了支持 html5 日期输入,日期格式 yyyy-mm-dd
分配给该值,mm/dd/yyyy
格式在 html5 浏览器中正确显示。
问题出现在非 html5 浏览器上,其中分配的值直接显示为文本(格式 yyyy-mm-dd
)。我尝试将此值转换为 mm/dd/yyyy
格式 jQuery 如下:
<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>
在 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" />
试一试;
这是 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.
顺便说一句,在您的代码中您缺少 = 登录 type"date" 请也更正它:)
我有一个动态生成值的输入
<input name="etd" type"date" value="<?php echo $row[0]; ?>">
为了支持 html5 日期输入,日期格式 yyyy-mm-dd
分配给该值,mm/dd/yyyy
格式在 html5 浏览器中正确显示。
问题出现在非 html5 浏览器上,其中分配的值直接显示为文本(格式 yyyy-mm-dd
)。我尝试将此值转换为 mm/dd/yyyy
格式 jQuery 如下:
<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>
在 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" />
试一试; 这是 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.
顺便说一句,在您的代码中您缺少 = 登录 type"date" 请也更正它:)