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