如何在文本框中使用onchange()事件获取旧值

页面加载时,我有一个文本框和一个值。 现在,如果用户在文本框中的任何东西chanegs,那么我想获得更改值(新值)和旧值,但是当我做ELEMENT.value然后它只给改变的值

任何build议获得旧价值?

下面是我的代码

<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> 

提前致谢

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> 

我会build议:

 function onChange(field){ field.old=field.recent; field.recent=field.value; //we have available old value here; } 

您应该使用HTML5数据属性。 您可以创build自己的属性并在其中保存不同的值。

我不确定,但也许这个逻辑会起作用。

 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); */ 

我常常使用的一个诡计就是将variables隐藏在“name”属性中(我通常不用于其他目的):

 select onFocus=(this.name=this.value) onChange=someFunction(this.name,this.value)><option... 

有些出人意料的是,旧的和新的值都被提交给一些someFunction(oldValue,newValue)

也许你可以将以前的文本框的值存储到一个隐藏的文本框中。 然后你可以从隐藏的第一个值和文本框本身的最后一个值。 与此相关的替代方法,在文本框的onfocus事件中,将文本框的值设置为隐藏字段,并在onchange事件中读取以前的值。

也许你可以尝试用“onfocus”事件保存旧值,然后用“onchange”事件与新值进行比较。

你可以这样做:为html元素添加oldvalue属性,当用户点击时添加set oldvalue。 然后onchange事件使用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>