У меня есть текстовое поле и значение, указанное в нем при загрузке страницы. Теперь, если пользователь меняет что-либо в текстовом поле, я хочу получить измененное значение (новое значение) и старое значение, но когда я делаю ELEMENT.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>
Заранее спасибо
javascript
html
validation
CFUser
источник
источник
Вам нужно будет сохранить старое значение вручную. Вы можете хранить его разными способами. Вы можете использовать объект 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>
источник
Я бы посоветовал:
function onChange(field){ field.old=field.recent; field.recent=field.value; //we have available old value here; }
источник
Вы должны использовать атрибуты данных HTML5. Вы можете создавать свои собственные атрибуты и сохранять в них разные значения.
источник
Грязный трюк, который я иногда использую, скрывает переменные в атрибуте name (который я обычно не использую для других целей):
select onFocus=(this.name=this.value) onChange=someFunction(this.name,this.value)><option...
Несколько неожиданно и старое, и новое значение затем отправляются в
someFunction(oldValue,newValue)
источник
Я не уверен, но, возможно, такая логика сработает.
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); */
источник
Вы можете сделать это: добавить атрибут oldvalue к элементу html, добавить set oldvalue при нажатии пользователем. Затем в событии onchange используйте старое значение.
<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>
источник
Возможно, вы можете сохранить предыдущее значение текстового поля в скрытом текстовом поле. Затем вы можете получить первое значение из скрытого и последнее значение из самого текстового поля. В качестве альтернативы, связанной с этим, в событии onfocus вашего текстового поля установите значение вашего текстового поля в скрытое поле, а в событии onchange прочитайте предыдущее значение.
источник
Возможно, вы можете попытаться сохранить старое значение с помощью события «onfocus», чтобы впоследствии сравнить его с новым значением с событием «onchange».
источник