用例是用于进行一些计算的Web应用程序表单......还有什么是新的......
通常,如果用户输入创建NaN条件的值,我会将该值重写为0以避免NaN。这样可以正常工作,它可以保持一切正常运行并防止NaN传播。
但从功能上来说这并不理想。理想的做法是简单地取消change()事件并恢复之前的值。中断事件没什么大不了的,但有没有办法做到这一点,以便在不诉诸数据/绑定等的情况下恢复/维护先前的输入值?
我的理由是这样:'change()'必须知道输入的先前值,因为change()正在做一个&在比较值之后确定发生了变化。那么有可能从change()中捕获这个先前的值吗?那就是问题。
答案 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);
}
});