Como usar o jQuery Datepicker com uma entrada da caixa de texto:
$("#my_txtbox").datepicker({
// options
});
isso não permite que o usuário insira texto aleatório na caixa de texto. Quero que o Datepicker apareça quando a caixa de texto ganhar foco ou o usuário clicar nela, mas quero que a caixa de texto ignore qualquer entrada do usuário usando o teclado (copiar e colar ou qualquer outra). Quero preencher a caixa de texto exclusivamente do calendário do Datepicker.
Isso é possível?
jQuery 1.2.6
Datepicker 1.5.2
jquery
datepicker
Elliot Vargas
fonte
fonte
$("#my_txtbox").prop('readonly', true)
<input ... readonly="readonly" style="cursor:pointer; background-color: #FFFFFF">
Com base na minha experiência, eu recomendaria a solução sugerida por Adhip Gupta:
O código a seguir não vai deixar o tipo de usuário novos personagens, mas irá permitir-lhes caracteres de exclusão:
Além disso, isso tornará o formulário inútil para aqueles que têm o JavaScript desativado:
fonte
readonly
atributo ao campo via JS, o @PWKad garante que, se o JavaScript estiver desativado (e, portanto, não for possível usar o datepicker), eles ainda poderão usar o formulário através da entrada manual padrão.$("#my_txtbox").prop('readonly', true)
;experimentar
fonte
Se você estiver reutilizando o selecionador de data em vários locais, poderá modificar a caixa de texto também via JavaScript usando algo como:
logo após / antes do local onde você inicializou o datepicker.
fonte
faz com que a caixa de texto perca seu valor após a postagem.
Você prefere usar a sugestão de Brad8118, que está funcionando perfeitamente.
EDIT: para fazê-lo funcionar no IE, use 'keydown' em vez de 'keypress'
fonte
adicione o atributo somente leitura no jquery.
fonte
Você tem duas opções para fazer isso. (Até onde sei)
Opção A: Faça seu campo de texto somente leitura. Isso pode ser feito da seguinte maneira.
Opção B: Altere o cursor no foco. Defina ti para desfocar. isso pode ser feito configurando o atributo
onfocus="this.blur()"
no campo de texto do seletor de datas.Ex:
<input type="text" name="currentDate" id="currentDate" onfocus="this.blur()" readonly/>
fonte
Após inicializar o seletor de datas:
fonte
$(".project-date").datepicker().keydown(false);
Para selecionar a data para aparecer no foco de ganho:
Se você não deseja entrada do usuário, adicione-o ao campo de entrada
fonte
Acabei de me deparar com isso, então estou compartilhando aqui. Aqui está a opção
https://eonasdan.github.io/bootstrap-datetimepicker/Options/#ignorereadonly
Aqui está o código.
HTML
JS
Aqui está o violino:
http://jsfiddle.net/matbaric/wh1cb6cy/
Minha versão do bootstrap-datetimepicker.js é 4.17.45
fonte
Essa demonstração faz isso colocando o calendário sobre o campo de texto para que você não possa digitá-lo. Você também pode definir o campo de entrada como somente leitura no HTML para ter certeza.
fonte
HTML
CSS
fonte
Eu sei que esse segmento é antigo, mas para outros que encontram o mesmo problema, que implementam a solução @ Brad8118 (que eu prefiro, porque se você optar por fazer a entrada somente leitura, o usuário não poderá excluir o valor da data inserido no datepicker se ele escolher) e também precisar impedir que o usuário cole um valor (como @ErikPhilips sugeriu ser necessário), deixei esta adição aqui, que funcionou para mim:
$("#my_txtbox").bind('paste',function(e) { e.preventDefault(); //disable paste });
daqui https://www.dotnettricks.com/learn/ jquery / disable-cut-copy-and-paste-in-textbox-jquery-javascript e todo o script específico usado por mim (usando o plugin fengyuanchen / datepicker):fonte
Em vez de adicionar somente leitura, você também pode usar onkeypress = "return false;"
fonte
Descobri que o plug-in jQuery Calendar, pelo menos para mim, geralmente funciona melhor para selecionar datas.
fonte
fonte
Aqui está sua resposta, que é uma maneira de resolver. Você não deseja usar o jquery quando restringiu a entrada do usuário no controle da caixa de texto.
fonte
$ ("# my_txtbox"). prop ('somente leitura', true)
funcionou como um encanto ..
fonte
Em vez de usar a caixa de texto, você pode usar o botão também. Funciona melhor para mim, onde não quero que os usuários escrevam a data manualmente.
fonte
Eu sei que esta pergunta já foi respondida e a mais sugerida é usar
readonly
atributos.Eu só quero compartilhar meu cenário e responder.
Depois de adicionar o
readonly
atributo ao meu elemento HTML , enfrentei o problema de não conseguir criar esse atributo tãorequired
dinamicamente.Mesmo tentei definir como ambos
readonly
erequired
no momento da criação do HTML.Então, vou sugerir não usar
readonly
se você quiser configurá-lo comorequired
também.Em vez disso, use
Isso permite pressionar
tab
apenas a tecla.Você pode adicionar mais códigos de chave que deseja ignorar.
Eu abaixo do código desde que adicionei os dois
readonly
erequired
ele ainda envia o formulário.Depois de removê-
readonly
lo, funciona corretamente.https://jsfiddle.net/shantaram/hd9o7eor/
fonte
substitua o ID do selecionador de horário: IDofDatetimePicker pelo seu ID.
Isso impedirá que o usuário insira mais entradas do teclado, mas ainda assim poderá acessar o pop-up de tempo.
$ ("# my_txtbox"). keypress (function (event) {event.preventDefault ();});
Tente esta fonte: https://github.com/jonthornton/jquery-timepicker/issues/109
fonte
Esta pergunta tem muitas respostas antigas e somente leitura parece ser a solução geralmente aceita. Acredito que a melhor abordagem nos navegadores modernos é usar a
inputmode="none"
tag de entrada HTML:ou, se você preferir fazê-lo no script:
Não testei extensivamente, mas está funcionando bem nas configurações do Android com as quais eu o usei.
fonte
Ou você pode, por exemplo, usar um campo oculto para armazenar o valor ...
e no $ ("# my_txtbox"). datepicker ({options:
fonte
Se você deseja que o usuário selecione uma data no selecionador de datas, mas não deseja que ele digite dentro da caixa de texto, use o seguinte código:
fonte