2015-08-09 2 views
4

У меня есть входной сигнал со значением динамически генерируемоговвода [тип = дата] значение формата динамически генерируется в РНР

<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 , так что я думаю, что это что-то с ним.

UPDATE:

Я использую этот код, чтобы поставить выбор даты на сторонних html5 способных браузерах, это не решает мою проблему с датами, извлекаемых из базы данных, но если оговорка может какую-то разница html5 браузеры. Я думал, может быть, я могу использовать это условие для фильтрации кода JQuery (что код, который я ищу)

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

$ (это) .va() вместо of $ (this) .attr ('value') – mplungjan

+0

Я видел это, но в любом случае работает для получения значения, но код не выполнялся, когда я помещал в него предупреждение, он не появлялся.Спасибо – culebrin

+1

Вы можете проверить '' поддерживает 'type =" date "' using ''valueAsDate' в HTMLInputElement.prototype' –

ответ

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.

Btw, в вашем коде, вам не хватает = знак в типа «дата» пожалуйста исправить это тоже :)

+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

Нет, у вашей исходной функции была ошибка. 'function()' отсутствует внутри 'each'. – Mouser

Смежные вопросы