javascript - 如何使用javascript捕获旧值并将其设置回取消

标签 javascript onchange

我有一个文本字段,我从中调用 onChange 事件的函数。当该文本字段中的值更改时,我会在此处抛出一个确认窗口。如果单击取消(在确认窗口中),则必须将旧值设置回文本字段。如果单击继续或确定,则应保留新值。 我已经尝试了很长时间,但无法保留旧值。

例如: 在 onchange 之前,文本字段中的 val ='first'; onChange 事件,val 更改为“second”,确认窗口打开,如果确定,所选文本字段应有第二个,如果选择取消,“first”应出现在文本字段中。

function onChangeOfValue(input){
    //var oldValue = document.getElementById(input).value;
    document.getElementById(input).onchange = function(){
    var newValue = this.value;
    alert("newVal is--->"+newValue);
    if(document.getElementById(input) != null && document.getElementById(input) != '' 
    && !confirm("Do you want to continue?")){

    // this.input=oldValue;
        return false;
    }
    }

}

最佳答案

请注意,表单控件有一个 defaultValue 属性,它是默认值(令人惊讶)。您可以使用此属性来存储输入的先前值,或将值返回到先前的值。

因此,将您得到的建议放在一起,将向以下函数传递对元素的引用,并询问用户是否要保留当前值。如果他们回答是,则输入的默认值 设置为当前。如果用户拒绝(即取消),则将重置为默认值

请注意,此方法将覆盖输入的原始,因此如果您重置表单,输入的 将重置为当前的默认值.

<script>
function onChangeOfValue(element) {
  var oldValue = element.defaultValue;
  var newValue = element.value;
  if (window.confirm('do you really want to change the value to ' + newValue + '?')) {
    element.defaultValue = newValue;
  } else {
    element.value = element.defaultValue;
  } 
}
</script>

<input onchange="onChangeOfValue(this);">

此方法适用于同一页面和表单中的任意数量的输入。

关于javascript - 如何使用javascript捕获旧值并将其设置回取消,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16931691/

相关文章:

javascript - 使用js脚本的PHP重定向无法正常工作

javascript - 如何在javascript中突出显示搜索文本记录?

javascript - 由于文本框onblur事件中的警告框,按钮点击事件丢失

Javascript:更改 onchange 并使用此参数

javascript - jQuery - autoNumeric 插件,自动从 .autoNumeric ('set' 触发 .change() ,值)

c# - 在 ASP.NET 中结合使用 onChange 事件和 Bootstrap

javascript - 为什么 $ ('#id' ).val() 不工作而 document.getElementById ('id' ).value 工作完美?

javascript - 使用 CryptoJS 将解密格式解析为具有大部分填充的字符串时出现问题

javascript - Frida - 访问具有所需类型的类属性

events - 在运行时获取文本框 dojo 小部件内的值