Eu tenho uma caixa de texto e um valor preenchido nela quando a página carrega. Agora, se o usuário alterar qualquer coisa na caixa de texto, então eu quero obter o valor alterado (novo valor) e o valor antigo, mas quando faço ELEMENT.value, ele está fornecendo apenas o valor alterado
alguma sugestão para obter valor antigo?
abaixo está o meu código
<head>
<script type="text/javascript">
function onChangeTest(changeVal) {
alert("Value is " + changeVal.value);
}
</script>
</head>
<body>
<form>
<div>
<input type="text" id="test" value ="ABS" onchange="onChangeTest(this)">
</div>
</form>
</body>
</html>
Desde já, obrigado
javascript
html
validation
CFUser
fonte
fonte
Você precisará armazenar o valor antigo manualmente. Você pode armazená-lo de várias maneiras diferentes. Você pode usar um objeto javascript para armazenar valores para cada caixa de texto, ou você pode usar um campo oculto (eu não recomendo - muito html pesado), ou você pode usar uma propriedade expando na própria caixa de texto, como este:
<input type="text" onfocus="this.oldvalue = this.value;" onchange="onChangeTest(this);this.oldvalue = this.value;" />
Então, sua função javascript para lidar com a mudança será assim:
<script type="text/javascript"> function onChangeTest(textbox) { alert("Value is " + textbox.value + "\n" + "Old Value is " + textbox.oldvalue); } </script>
fonte
Eu sugeriria:
function onChange(field){ field.old=field.recent; field.recent=field.value; //we have available old value here; }
fonte
Você deve usar atributos de dados HTML5. Você pode criar seus próprios atributos e salvar diferentes valores neles.
fonte
Um truque sujo que às vezes uso é ocultar variáveis no atributo 'nome' (que normalmente não uso para outros fins):
select onFocus=(this.name=this.value) onChange=someFunction(this.name,this.value)><option...
De forma um tanto inesperada, tanto o valor antigo quanto o novo são submetidos ao
someFunction(oldValue,newValue)
fonte
Não tenho certeza, mas talvez essa lógica funcione.
var d = 10; var prevDate = ""; var x = 0; var oldVal = ""; var func = function (d) { if (x == 0 && d != prevDate && prevDate == "") { oldVal = d; prevDate = d; } else if (x == 1 && prevDate != d) { oldVal = prevDate; prevDate = d; } console.log(oldVal); x = 1; }; /* ============================================ Try: func(2); func(3); func(4); */
fonte
Você pode fazer isso: adicione o atributo oldvalue ao elemento html, adicione definir oldvalue quando o usuário clicar. Então, o evento onchange usa oldvalue.
<input type="text" id="test" value ="ABS" onchange="onChangeTest(this)" onclick="setoldvalue(this)" oldvalue=""> <script> function setoldvalue(element){ element.setAttribute("oldvalue",this.value); } function onChangeTest(element){ element.setAttribute("value",this.getAttribute("oldvalue")); } </script>
fonte
Talvez você possa armazenar o valor anterior da caixa de texto em uma caixa de texto oculta. Então você pode obter o primeiro valor de oculto e o último valor da própria caixa de texto. Uma alternativa relacionada a isso, no evento onfocus de sua caixa de texto, defina o valor de sua caixa de texto para um campo oculto e no evento onchange leia o valor anterior.
fonte
Talvez você possa tentar salvar o valor antigo com o evento "onfocus" para depois compará-lo com o novo valor com o evento "onchange".
fonte