Eu tenho um campo de texto oculto cujo valor é atualizado por meio de uma resposta AJAX.
<input type="hidden" value="" name="userid" id="useid" />
Quando esse valor muda, eu gostaria de disparar uma solicitação AJAX. Alguém pode aconselhar sobre como detectar a alteração?
Eu tenho o seguinte código, mas não sei como procurar o valor:
$('#userid').change( function() {
alert('Change!');
})
Respostas:
Portanto, é tarde demais, mas eu descobri uma resposta, caso ela se torne útil para qualquer pessoa que se depare com esse tópico.
Alterações no valor de elementos ocultos não acionam automaticamente o evento .change (). Portanto, onde quer que você esteja definindo esse valor, você também precisa dizer ao jQuery para ativá-lo.
Quando esse for o caso,
deve funcionar como esperado.
fonte
.trigger()
Geralmente é melhor usar do que apenas ligarchange()
?change
evento, você deve adicionar o códigosetUserID()
para verificar se o valor é realmente alterado ou não.if ($('#userid').val() != myVaule) { // set val() and trigger change }
Como a entrada oculta não aciona o evento "change" na alteração, usei o MutationObserver para acionar isso.
(Às vezes, as alterações ocultas do valor de entrada são feitas por outros scripts que você não pode modificar)
Isso não funciona no IE10 e abaixo
fonte
input[type=hidden]
trigger('change')
não funcionou para mim, então eu criei um CustomEvent, registrou e depoiselement.dispatchEvent(myCustomEvent)
Você pode simplesmente usar a função abaixo. Você também pode alterar o elemento de texto.
Alterações no valor de elementos ocultos não acionam automaticamente o evento .change (). Portanto, onde quer que você esteja definindo esse valor, você também precisa dizer ao jQuery para ativá-lo.
HTML
JAVASCRIPT
deve funcionar como esperado.
http://jsfiddle.net/7CM6k/3/
fonte
fonte
É possível usar
Object.defineProperty()
para redefinir a propriedade 'value' do elemento de entrada e fazer qualquer coisa durante sua alteração.Object.defineProperty()
permite definir um getter e setter para uma propriedade, controlando-a.https://jsfiddle.net/bvvmhvfk/
fonte
Este exemplo retorna o valor do campo de rascunho sempre que o campo de rascunho oculto altera seu valor (navegador Chrome):
fonte
Partindo da resposta da Viktar , aqui está uma implementação que você pode chamar uma vez em um determinado elemento de entrada oculto para garantir que o evento de alteração subsequente seja acionado sempre que o valor do elemento de entrada for alterado:
Chame isso no documento pronto da seguinte maneira:
fonte
Embora este segmento tenha 3 anos, aqui está minha solução:
fonte