捕获change()的先前值以将输入字段还原为该值?

时间:2013-06-30 22:49:29

标签: jquery

用例是用于进行一些计算的Web应用程序表单......还有什么是新的......

通常,如果用户输入创建NaN条件的值,我会将该值重写为0以避免NaN。这样可以正常工作,它可以保持一切正常运行并防止NaN传播。

但从功能上来说这并不理想。理想的做法是简单地取消change()事件并恢复之前的值。中断事件没什么大不了的,但有没有办法做到这一点,以便在不诉诸数据/绑定等的情况下恢复/维护先前的输入值?

我的理由是这样:'change()'必须知道输入的先前值,因为change()正在做一个&在比较值之后确定发生了变化。那么有可能从change()中捕获这个先前的值吗?那就是问题。

2 个答案:

答案 0 :(得分:0)

您可以使用变量来存储之前的值,并根据值更改它,例如:

var input = $("input#text_input");
var prev_val = null;
input.on("change", function(){
    var val = $(this).val();
    if(isNaN(val)) {
        input.val(prev_val);
        return(false);
    } else {
        prev_val = val;
        // Other stuff
    }
});

答案 1 :(得分:0)

var prevVal;
var input = $("input_selector");
input.focus(function(){
  prevVal = input.val();
}).change(function(){
  if (isNaN(input.val())) {
    input.val(prevVal);
  }
});