last day (15 days later) » 

7:57 PM
2
A: Exibindo a data no campo data

SergioTens de ter em conta que um input type="date" aceita uma string no formato aaaa-mm-dd. Isso significa que o mês tem de ser 01 e não somente 1. Se colocares por exemplo input.value = '2015-1-25'; não vai funcionar. Repara também que uso "-" em vêz de "/". Existe outra maneira amis recente, para b...

 
@man exato, é uma especificação nova e está a ser implementada em browsers modernos. A primeira solução é a que funciona cross-browser.
 
Valeu Sergio! Eu posso mudar a posição do mês e do dia na hora de exibir?
@Sergio, testei o código e não apareceu a data do dia no campo... var Hoje = new Date(); Hoje.getDate(); Hoje.getDay(); Hoje.getMonth(); dia = Hoje.getDate(); mes = Hoje.getMonth()+1; ano = Hoje.getFullYear(); var data = [ano, mes, dia].map(function (nr) { return (nr + '').length == 1 ? '0' + nr : nr; }); document.querySelector('input[name="dia"]').value = data.join('-');
 
@GustavoSevero funciona bem para mim: jsfiddle.net/sksvgy79 Já agora essas 3 linhas depois de var Hoje = new Date(); não fazem nada, podes tirar. Se ainda não funcionar faz um jsFiddle para poder ajudar mais...
 
É muito estranho, pois pra mim não funciona: Estou usando jquery-2.1.1.min.js <script type="text/javascript" src="js/jquery-2.1.1.min.js"></script> <input id="dia" type="date" name="dia"> var Hoje = new Date(); dia = Hoje.getDate(); mes = Hoje.getMonth() + 1; ano = Hoje.getFullYear(); var data = [ano, mes, dia].map(function (nr) { return (nr + '').length == 1 ? '0' + nr : nr; }); document.querySelector('input[name="dia"]').value = data.join('-');
 
@GustavoSevero podes colocar isso num jsFiddle e colocar aqui o exemplo? e que Browser estás a usar?
 
7:58 PM
Rodei o mesmo código no jsfiddle, e lá funcionou! Cara muito estranho...
Essa mensagem aparece no console do chrome e aponta para essa linha: Uncaught TypeError: Cannot set property 'value' of null var foi = document.querySelector('input[name="dia"]').value = data.join('-');
 
@GustavoSevero esse erro quer dizer que não há nenhum input com esse nome. Já conseguiste pôr a funcionar? que Browser estás a usar?
 
@Sergio, vou checar o nome, id do campo e te falo. Estou no trabalho agora, mas logo a tarde vejo isso. Estou usando o Chrome
@Sergio, o nome do campo onde quero exibir a data é dia, name="dia", <input type="date" name="dia">
 
@GustavoSevero exato, como no meu exemplo. Mas isso não te funciona na tua página? tens algum erro na consola? tens isso online para eu poder ver? senão coloca aqui um jsFiddle com o código todo da página que eu dou uma olhada.
 
O erro que aparece no console é esse: Uncaught TypeError: Cannot set property 'valueAsDate' of null
 
@GustavoSevero esse jsFiddle funciona, o que eu queria ver é o teu código que tens na página onde dá esse erro.
 
7:58 PM
<script type="text/javascript" src="js/jquery-2.1.1.min.js"></script> <script type="text/javascript"> var Hoje = new Date(); dia = Hoje.getDate(); mes = Hoje.getMonth() + 1; ano = Hoje.getFullYear(); var data = [ano, mes, dia].map(function (nr) { return (nr + '').length == 1 ? '0' + nr : nr; }); document.querySelector('input[name="dia"]').valueAsDate = new Date(); </script> <td><input id="dia" type="date" name="dia"></td>
 
@GustavoSevero ok, estou a ver o problema. Tens de ter esse script depois do HTML. Coloca o script no fundo da página antes do </body>
 
Perfeito, funcionou! Mas tenho como formatar a data? Aparece 01/29/2015 e gostaria que ficasse 29/01/2015
 
@GustavoSevero o formato não dá para mudar. Se queres dd/mm/aaaa tens de mudar para type="text"
 
Mas se eu mudar para type="text" não aparecerá a janela do calendário para escolher data, correto?
 
@GustavoSevero exato, nesse caso devias usar um datepicker: jqueryui.com/datepicker
 
7:58 PM
Certo. Mesmo assim, muito obrigado pela ajuda. Agora, qual o motivo desse javascript funcionar na parte de baixo do html e não no início?
 
oi @GustavoSevero
 
Quando corres esta linha document.querySelector('input[name="dia"]')
ele vai dar erro se o HTML ainda não tiver sido lido
 
certo
 
por isso é que funciona se estiver depois do HTML ter sido lido
 
8:00 PM
Perfeito
Obrigado
 
de nada
boa sorte
 

last day (15 days later) »