Se você configurar um selecionador de data em um input[type="text"]
elemento, poderá não receber uma data formatada de forma consistente, principalmente quando o usuário não seguir o formato da data para entrada de dados.
Por exemplo, quando você define dateFormat como dd-mm-yy
e os tipos de usuário 1-1-1
. O datepicker converterá isso para Jan 01, 2001
internamente, mas chamar val()
o objeto datepicker retornará a string "1-1-1"
- exatamente o que está no campo de texto.
Isso implica que você deve validar a entrada do usuário para garantir que a data inserida esteja no formato esperado ou não permitir que o usuário insira datas de forma livre (preferindo o seletor de calendário). Mesmo assim, é possível forçar o código do datepicker para fornecer uma string formatada como você espera:
var picker = $('#datepicker');
picker.datepicker({ dateFormat: 'dd-mm-yy' });
picker.val( '1-1-1' ); // simulate user input
alert( picker.val() ); // "1-1-1"
var d = picker.datepicker( 'getDate' );
var f = picker.datepicker( 'option', 'dateFormat' );
var v = $.datepicker.formatDate( f, d );
alert( v ); // "01-01-2001"
No entanto, esteja ciente de que, embora o getDate()
método do selecionador de data retorne uma data, ele só pode fazer muito com a entrada do usuário que não corresponde exatamente ao formato da data. Isso significa que, na ausência de validação, é possível obter uma data diferente do que o usuário espera. Advertência emptor .