Как получить старое значение с событием onchange() в текстовом поле
У меня есть текстовое поле и значение, заполненное в нем при загрузке страницы.
Теперь, если пользователь chanegs любую вещь в текстовом поле, то я хочу получить измененное значение (новое значение) и старое значение
но когда я делаю элемент.значение тогда его дает только измененное значение
любые предложения, чтобы получить старое значение?
ниже мой код
<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>
спасибо заранее
9 ответов:
element.defaultValueдаст вам исходное значение.обратите внимание, что это работает только на начальное значение.
Если вам это нужно, чтобы сохранить" старое " значение каждый раз, когда оно изменяется, свойство expando или аналогичный метод будет соответствовать вашим потребностям
вам нужно будет сохранить старое значение вручную. Вы можете хранить его по-разному. Вы можете использовать объект 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. Вы можете создавать свои собственные атрибуты и сохранять в них различные значения.
грязный трюк, который я иногда использую, скрывает переменные в атрибуте " имя " (который я обычно не использую для других целей):
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); */
возможно, вы можете сохранить Предыдущее значение текстового поля в скрытом текстовом поле. Затем вы можете получить первое значение из скрытого и последнее значение из самого текстового поля. Альтернативный вариант, связанный с этим, в onfocus событие вашего текстового поля установите значение вашего текстового поля в скрытое поле, а в onChange событие считывает Предыдущее значение.
возможно, вы можете попытаться сохранить старое значение с событием "onfocus", чтобы затем сравнить его с новым значением с событием" onchange".
можно сделать так: добавить атрибут старого значения к HTML-элементу, добавить набор старого значения, когда пользователь нажмите кнопку. Затем использовать событие 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>
Comments