У меня есть вход с динамически генерируемым значением
<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>
Попробуйте это как;
Вот Скриптовая ссылка.
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.
Кстати, в вашем коде вы пропускаете знак равно войти в систему тип «дата» пожалуйста, исправьте это тоже 🙂
В 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" />