Pek*_*kka 40 html javascript jquery
我有一个input textin jquery我想知道是否有可能在发生之前得到那个input text(type=number和type=text)onchange的值,并且在onchange发生之后也获得相同输入输入文本的值.这是使用jquery.
我尝试了什么:
我尝试在变量上保存值然后在onchange中调用该值,但我得到空白值
Gon*_*ing 89
最简单的方法是data()在元素获得焦点时使用保存原始值.这是一个非常基本的例子:
JSFiddle: http ://jsfiddle.net/TrueBlueAussie/e4ovx435/
$('input').on('focusin', function(){
console.log("Saving value " + $(this).val());
$(this).data('val', $(this).val());
});
$('input').on('change', function(){
var prev = $(this).data('val');
var current = $(this).val();
console.log("Prev value " + prev);
console.log("New value " + current);
});
Run Code Online (Sandbox Code Playgroud)
注意:当可以有多个匹配元素时,使用委托事件处理程序通常更有效.这样,只添加了一个处理程序(更小的开销和更快的初始化),并且在事件时间的任何速度差异都可以忽略不计.
以下是使用连接到的委托事件的相同示例document:
$(document).on('focusin', 'input', function(){
console.log("Saving value " + $(this).val());
$(this).data('val', $(this).val());
}).on('change','input', function(){
var prev = $(this).data('val');
var current = $(this).val();
console.log("Prev value " + prev);
console.log("New value " + current);
});
Run Code Online (Sandbox Code Playgroud)
JsFiddle: http ://jsfiddle.net/TrueBlueAussie/e4ovx435/65/
委托的事件通过侦听的事件(工作focusin,change一个祖先元素(上等等)document*在这种情况下),然后将所述的jQuery滤波器(input)仅在气泡链中的元件然后将所述函数仅引起该那些匹配元素事件.
*注意:一般规则,document用作委派事件的默认值而不是body.body有一个bug,与样式有关,可能导致它不会出现冒泡的鼠标事件.也document总是存在,所以你可以在DOM就绪处理程序之外附加到它:)
当然,您需要手动存储旧值,具体取决于您感兴趣的时刻(在聚焦之前,从上次更改开始)。初始值可以从 defaultValue 属性中获取:
function onChange() {
var oldValue = this.defaultValue;
var newValue = this.value;
}
Run Code Online (Sandbox Code Playgroud)
如 Gone Coding 的回答所示,可以采用聚焦前的值。但你必须记住,价值可以在不专注的情况下改变。