Perguntas frequentes rápidas sobre input[type=date] no Google Chrome

Eiji Kitamura
Eiji Kitamura

  • Este artigo foi escrito por Kent Tamura, engenheiro de software do Chrome.

Como você já deve ter notado, o Google Chrome oferece suporte a um seletor de datas desde o Chrome 20. Basta definir o atributo type do elemento input como date para que o usuário clique no botão de seta para que o Chrome exiba um bom widget de agenda.

Como recebemos muito feedback dos desenvolvedores, gostaríamos de esclarecer algumas coisas sobre como aproveitar ao máximo o uso do seletor de data neste artigo.

Como a localidade afeta o formato de data do valor de entrada?

Os usuários podem digitar um valor de data no campo de texto de uma input[type=date] com o formato de data mostrado na caixa como texto cinza. Esse formato é gerado na configuração do sistema operacional.

Tela de formatos de data

Autores da web não têm como alterar o formato da data porque, no momento, não existem padrões para especificar o formato.

Como o valor de entrada é representado ao enviar para um servidor?

O valor da data interpretado de input[type=date] na solicitação HTTP, como GET / POST, será formatado como yyyy-mm-dd.

Que tipo de formato o valor de entrada retorna?

O input.value sempre é retornado como yyyy-mm-dd, independentemente do formato da apresentação.

Que tipo de formato o valor de entrada aceita?

Ao definir o input.value de maneira programática, o valor aceita apenas o estilo yyyy-mm-dd, independentemente do formato da apresentação, para o valor inicial e o valor injetado pelo JavaScript.

Como faço para alterar a aparência do seletor de data?

No momento, não é possível definir o estilo da aparência do seletor de data. No WebKit, já oferecemos maneiras de definir o estilo dos controles de formulário com a propriedade CSS -webkit-appearance ou o seletor de pseudoclasse ::-webkit-foo. No entanto, o pop-up da agenda não oferece essas formas no WebKit porque é separado do documento, como um menu pop-up para <select>, e não há um padrão de como controlar o estilo nos subelementos.

Como posso evitar conflitos entre o seletor de data do jQuery e o seletor de data nativo?

Se você tentou jQuery Datepicker no input[type=date] no Google Chrome, talvez tenha notado agendas sobrepostas na interface do jQuery e no pop-up de agenda nativo. Se você quiser aplicar jQuery Datepicker em todas as plataformas, use input[type=text] em vez de input[type=date]. Não apenas o Google Chrome, mas também o iOS Safari, o navegador BlackBerry e o Opera têm a própria IU para o input[type=date]. No momento, não há como criar uma IU unificada em todas as plataformas usando o input[type=date]. Se você quiser aplicar o jQuery Datepicker somente a plataformas sem suporte a input[type=date], use o Modernizr ou o código a seguir:

var isDateInputSupported = function(){
var elem = document.createElement('input');
elem.setAttribute('type','date');
elem.value = 'foo';
return (elem.type == 'date' && elem.value != 'foo');
}

if (!isDateInputSupported())  // or.. !Modernizr.inputtypes.date
    $('input[type="date"]').datepicker();