我有.numeric类的文本框。我希望在编辑该值后检查值是否有变化。
我在google之后找到了这段代码。
var previousValue = $("#elm").val();
$("#elm").keyup(function(e) {
var currentValue = $(this).val();
if(currentValue != previousValue) {
previousValue = currentValue;
alert("Value changed!");
}
});
但此代码仅适用于一个文本字段(标识为#elm
)。如果我想让它适用于多个字段(共享课程numeric
)?
答案 0 :(得分:3)
$(".numeric").each(function(){
$(this).data("value", $(this).val());
});
$(".numeric").keyup(function(e) {
var currentValue = $(this).val();
var preVal = $(this).data("value");
alert(preVal);
if(currentValue != preVal) {
$(this).data("value", currentValue);
preVal = currentValue;
alert("Value changed!");
}
});
尝试在一个字段中输入55
,在另一个字段中输入66
,在另一个字段中输入77
,并注意每个字段的前一个值仍然不同
答案 1 :(得分:1)
如何更改选择器以匹配
$(".numeric").on('keyup', function(e) {
if (e.isTrigger) $(this).data('val', this.value);
if(this.value != $(this).data('val')) {
$(this).data('val', this.value);
alert("Value changed!");
}
}).trigger('keyup');
而不是仅仅从Google复制粘贴代码,花费几个小时https://learn.jquery.com/并了解其工作原理。
答案 2 :(得分:1)
非常简单:
var currentValue ;
$(".numeric").keydown(function(e) {
currentValue = $(this).val();
});
$(".numeric").keyup(function(e) {
var currentValue = $(this).val();
if(currentValue != previousValue) {
previousValue = currentValue;
alert("Value changed!");
}
});
这里是DEMO
答案 3 :(得分:0)
使用“更改”触发器还将涵盖用户通过鼠标操作在字段中复制粘贴值的情况
$(".numeric").each(function(){
$(this).data("value", $(this).val());
});
$(".numeric").on('change', function(e) {
var currentValue = $(this).val();
var preVal = $(this).data("value");
if(currentValue != preVal) {
preVal = currentValue;
alert("Value changed!");
}
});
答案 4 :(得分:0)
对不起。最后,我找到了最佳解决方案。我很容易我们可以在jquery中使用change函数。更改值后它会起作用。我想要的。
$('.numeric').change(function () {
alert('Changed');
});
答案 5 :(得分:0)
$(".numeric").each(function(){
$(this).attr('data-pre_value', $(this).val());
});
$(".numeric").bind('keyup', function(){
var pre_value = $(this).attr('data-pre_value');
var current_value = $(this).val();
if(pre_value != current_value){
alert('value has changed');
}
});
现在,您可以更改绑定事件。你可以在模糊或焦点上绑定事件。