Tengo un cuadro de texto y un valor en él cuando se carga la página. Ahora, si el usuario cambia algo en el cuadro de texto, entonces quiero obtener el valor cambiado (valor nuevo) y el valor anterior, pero cuando hago ELEMENT.value, solo se obtiene el valor cambiado
¿Alguna sugerencia para obtener un valor antiguo?
a continuación está mi 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>
Gracias por adelantado
javascript
html
validation
CFUser
fuente
fuente
Deberá almacenar el valor anterior manualmente. Puede almacenarlo de muchas formas diferentes. Podría usar un objeto javascript para almacenar valores para cada cuadro de texto, o podría usar un campo oculto (no lo recomendaría, demasiado html pesado), o podría usar una propiedad expando en el cuadro de texto, como este:
<input type="text" onfocus="this.oldvalue = this.value;" onchange="onChangeTest(this);this.oldvalue = this.value;" />
Entonces su función de javascript para manejar el cambio se ve así:
<script type="text/javascript"> function onChangeTest(textbox) { alert("Value is " + textbox.value + "\n" + "Old Value is " + textbox.oldvalue); } </script>
fuente
Yo sugeriría:
function onChange(field){ field.old=field.recent; field.recent=field.value; //we have available old value here; }
fuente
Debe utilizar atributos de datos HTML5. Puede crear sus propios atributos y guardar diferentes valores en ellos.
fuente
Un truco sucio que a veces uso es ocultar variables en el atributo 'nombre' (que normalmente no uso para otros fines):
select onFocus=(this.name=this.value) onChange=someFunction(this.name,this.value)><option...
De manera algo inesperada, tanto el valor antiguo como el nuevo se envían a
someFunction(oldValue,newValue)
fuente
No estoy seguro, pero tal vez esta 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); */
fuente
Puede hacer esto: agregue el atributo oldvalue al elemento html, agregue set oldvalue cuando el usuario haga clic. Luego, el 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>
fuente
Tal vez pueda almacenar el valor anterior del cuadro de texto en un cuadro de texto oculto. Luego, puede obtener el primer valor de hidden y el último valor de textbox. Una alternativa relacionada con esto, en el evento onfocus de su cuadro de texto, establezca el valor de su cuadro de texto en un campo oculto y en el evento onchange lea el valor anterior.
fuente
Tal vez pueda intentar guardar el valor anterior con el evento "onfocus" para luego compararlo con el nuevo valor con el evento "onchange".
fuente