javascript — значение формата ввода [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>

4

Решение

Попробуйте это как;
Вот Скриптовая ссылка.

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.

Кстати, в вашем коде вы пропускаете знак равно войти в систему тип «дата» пожалуйста, исправьте это тоже 🙂

1

Другие решения

В 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

По вопросам рекламы [email protected]