Eu tenho um código JS no qual, quando você altera um campo, ele chama uma rotina de pesquisa. O problema é que não consigo encontrar nenhum evento jQuery que será acionado quando o Datepicker atualizar o campo de entrada.
Por algum motivo, um evento de alteração não é chamado quando o Datepicker atualiza o campo. Quando o calendário aparece, ele muda o foco, então também não posso usá-lo. Alguma ideia?
jquery
datepicker
zbestzeus
fonte
fonte
Respostas:
Você pode usar o
onSelect
evento do datepicker .Exemplo ao vivo :
Mostrar snippet de código
Infelizmente, é
onSelect
acionado sempre que uma data é selecionada, mesmo que não tenha sido alterada. Essa é uma falha de design no datepicker: sempre é acionadaonSelect
(mesmo que nada tenha sido alterado) e não dispara nenhum evento na entrada subjacente na alteração. (Se você procurar no código desse exemplo, estamos ouvindo as alterações, mas elas não estão sendo levantadas.) Provavelmente, deve disparar um evento na entrada quando as coisas mudarem (possivelmente ochange
evento usual ou possivelmente um datepicker- específico).Se você quiser, é claro, pode fazer o
change
evento pegarinput
fogo:Isso será acionado
change
no subjacenteinput
para qualquer manipulador conectado via jQuery. Mas, novamente, sempre dispara. Se você deseja acionar apenas uma alteração real, precisará salvar o valor anterior (possivelmente viadata
) e comparar.Exemplo ao vivo :
Mostrar snippet de código
fonte
change
(s) manipulador (es)" e, portanto, atualizei a resposta com isso. :-)A resposta de TJ Crowder ( https://stackoverflow.com/a/6471992/481154 ) é muito boa e ainda permanece precisa. O acionamento do evento de alteração na função onSelect é o mais próximo possível.
No entanto, existe uma boa propriedade no objeto datepicker (
lastVal
) que permitirá que você acione condicionalmente o evento de alteração apenas em alterações reais sem precisar armazenar os valores:Em seguida, basta manipular eventos de alteração como normal:
fonte
lastVal
, porém, é ;-)lastVal
não existe no objeto datepicker, pelo menos nos meus testes. Portanto, essa solução sempre acionará a alteração.Você está procurando o evento onSelect no objeto datepicker:
fonte
Escrevi isso porque precisava de uma solução para acionar um evento apenas se a data fosse alterada.
É uma solução simples. Cada vez que a caixa de diálogo é fechada, testamos para ver se os dados foram alterados. Se houver, acionamos um evento personalizado e redefinimos o valor armazenado.
Agora podemos conectar manipuladores para esse evento personalizado ...
fonte
fonte
Estou usando o bootstrap-datepicker e nenhuma das soluções acima funcionou para mim. Esta resposta me ajudou ..
O evento de data de modificação do selecionador de data de inicialização não é acionado ao editar manualmente ou limpar a data
Aqui está o que eu apliquei:
Espero que isso possa ajudar os outros.
fonte
No jQueryUi 1.9, consegui fazê-lo funcionar com um valor de dados adicional e uma combinação das funções beforeShow e onSelect:
Funciona para mim :)
fonte
Eu sei que esta é uma pergunta antiga. Mas não foi possível obter o evento jquery $ (this) .change () para disparar corretamente em Select. Então, eu fui com a seguinte abordagem para disparar o evento de mudança via vanilla js.
fonte
Tente isto
Espero que isto ajude:)
fonte
Experimentar :
fonte
O manual diz:
Assim:
Funciona para mim.
fonte
Minha solução:
fonte
Minha solução é:
fonte
Código de evento de alteração de valor selecionado pelo DatePicker abaixo
fonte
se você estiver usando wdcalendar, isso ajudará você
o evento onReturn funciona para mim
espero que isso ajude
fonte
Acho que seu problema pode estar na forma como o datepicker está configurado. Por que você não desconecta a entrada ... não use altField. Em vez disso, defina explicitamente os valores quando o onSelect for acionado. Isso lhe dará controle de cada interação; o campo de texto do usuário e o selecionador de data.
Nota: Às vezes, é necessário chamar a rotina em .change () e não em .onSelect () porque onSelect pode ser chamado em diferentes interações que você não espera.
Pseudo-código:
fonte