使用类在文本框中检查更改的值

时间:2014-03-25 10:18:24

标签: javascript jquery

我有.numeric类的文本框。我希望在编辑该值后检查值是否有变化。

我在google之后找到了这段代码。

var previousValue = $("#elm").val();
$("#elm").keyup(function(e) {
    var currentValue = $(this).val();
    if(currentValue != previousValue) {
         previousValue = currentValue;
         alert("Value changed!");
    }
});

但此代码仅适用于一个文本字段(标识为#elm)。如果我想让它适用于多个字段(共享课程numeric)?

,我该怎么办?

6 个答案:

答案 0 :(得分:3)

使用.each().data()

$(".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!");
    }
});

DEMO

尝试在一个字段中输入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');

FIDDLE

而不是仅仅从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!");
    }
});

JSFiddle Demo

答案 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'); 
  }

});

现在,您可以更改绑定事件。你可以在模糊或焦点上绑定事件。