Как получить старое значение с событием onchange() в текстовом поле
У меня есть текстовое поле и значение, заполненное им при загрузке страницы.
Теперь, если пользователь chanegs что-нибудь в текстовом поле, то я хочу получить измененное значение (новое значение) и старое значение
но когда я делаю ELEMENT.value, тогда его значение дает только значение Value
любые предложения для получения старого значения?
ниже мой код
<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>
Спасибо в Advance
Ответы
Ответ 1
element.defaultValue
даст вам исходное значение.
Обратите внимание, что это работает только с начальным значением.
Если вам нужно это, чтобы сохранить "старое" значение каждый раз, когда оно изменяется, свойство expando или аналогичный метод будет соответствовать вашим потребностям
Ответ 2
Вам нужно будет сохранить старое значение вручную. Вы можете хранить его по-разному. Вы можете использовать объект javascript для хранения значений для каждого текстового поля, или вы можете использовать скрытое поле (я бы не рекомендовал его - слишком html тяжелый), или вы могли бы использовать свойство expando в самом текстовом поле, например:
<input type="text" onfocus="this.oldvalue = this.value;" onchange="onChangeTest(this);this.oldvalue = this.value;" />
Затем ваша функция javascript для обработки изменения выглядит следующим образом:
<script type="text/javascript">
function onChangeTest(textbox) {
alert("Value is " + textbox.value + "\n" + "Old Value is " + textbox.oldvalue);
}
</script>
Ответ 3
Я бы предложил:
function onChange(field){
field.old=field.recent;
field.recent=field.value;
//we have available old value here;
}
Ответ 4
Вы должны использовать атрибуты данных HTML5. Вы можете создавать свои собственные атрибуты и сохранять в них разные значения.
Ответ 5
Я не уверен, но, возможно, эта логика будет работать.
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);
*/
Ответ 6
Грязный трюк, который я когда-то использовал, скрывает переменные в атрибуте "name" (который я обычно не использую для других целей):
select onFocus=(this.name=this.value) onChange=someFunction(this.name,this.value)><option...
Несколько неожиданно, и старое, и новое значение затем отправляются на someFunction(oldValue,newValue)
Ответ 7
Возможно, вы можете сохранить предыдущее значение текстового поля в скрытое текстовое поле. Затем вы можете получить первое значение из скрытого и последнее значение из самого текстового поля. Альтернатива, связанная с этим, при событии onfocus вашего текстового поля задает значение вашего текстового поля в скрытом поле и в событии onchange читает предыдущее значение.
Ответ 8
Возможно, вы можете попытаться сохранить старое значение с событием "onfocus", чтобы впоследствии сравнить его с новым значением с событием "onchange".
Ответ 9
Вы можете сделать это: добавьте атрибут oldvalue в элемент html, добавьте set oldvalue при нажатии пользователем. Затем onchange event использует 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>