Как получить старое значение с событием 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>


спасибо заранее

551   9  

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

    Ничего не найдено.