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

CFU*_*ser 79 html javascript validation

当页面加载时,我有一个文本框和一个值poplulated.现在如果用户在文本框中查找任何内容,那么我想获得更改值(新值)和旧值但是当我执行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>
Run Code Online (Sandbox Code Playgroud)

提前致谢

Gab*_*ams 161

您需要手动存储旧值.你可以用很多不同的方式存储它.您可以使用javascript对象存储每个文本框的值,或者您可以使用隐藏字段(我不推荐它 - 太重html),或者您可以在文本框本身使用expando属性,如下所示:

<input type="text" onfocus="this.oldvalue = this.value;" onchange="onChangeTest(this);this.oldvalue = this.value;" />
Run Code Online (Sandbox Code Playgroud)

然后你的javascript函数来处理更改看起来像这样:

    <script type="text/javascript">
    function onChangeTest(textbox) {
        alert("Value is " + textbox.value + "\n" + "Old Value is " + textbox.oldvalue);
    }
    </script>
Run Code Online (Sandbox Code Playgroud)

  • 如果它不起作用,或者它是一个不恰当的答案,我可以理解你投票给答案.我提供了一个解决用户需求的答案.此代码已经过测试.它是完整的.它确实接受了接受的答案(您可以随时查看defaultValue属性,但如果用户多次更改该值会怎么样?). (21认同)
  • 简单有效.希望我能给你超过+1. (4认同)
  • 如果您多次操作该值,则效果会更好.上面的答案(element.defaultValue)只能运行一次.这一个:) (2认同)

Geo*_*rge 66

element.defaultValue 会给你原始价值.

请注意,这仅适用于初始值.

如果您需要在每次更改时保留"旧"值,则expando属性或类似方法将满足您的需求

  • element.defaultValue返回<input>标记中设置的值.如果通过编辑或其他一些JavaScript更改了此值,则defaultValue将不会返回此(新)旧值. (45认同)

小智 6

我会建议:

function onChange(field){
  field.old=field.recent;
  field.recent=field.value;

  //we have available old value here;
}
Run Code Online (Sandbox Code Playgroud)


tiw*_*ash 5

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