如何检查是否已对表单进行了更改

时间:2013-01-05 10:11:24

标签: jquery ruby-on-rails user-interface

我们有一个包含多个字段的简单表单,如果用户进行任何修改,我们应该显示Save按钮,否则不应该显示。当用户在下拉列表中选择某些内容并随后返回到原始值时(例如从ValA到ValB然后最终到ValA),您如何处理场景?我们应该如何在Rails应用程序中处理这个问题。

2 个答案:

答案 0 :(得分:2)

修改

我做了一些更新。它不是最漂亮的,但已经很晚了,这是我现在能做的最好的事情。

添加了辅助函数来评估值并与对象中的现有值进行比较。如果它存在,我们迭代一个变量。如果表单元素的长度与默认值的出现次数匹配,则我们隐藏show按钮。我在函数中允许2个参数,我们想要检查值的元素,以及我们希望切换可见性的元素。

希望这有帮助。

$(function () {
  var defaults = {},
      eles =  $('form *').filter(':input'),
      btn = $('.submit');
  function checkEmpty(objs, toggle){
    var len = objs.length,
        occurences = 0;
    $.each(objs, function(i,obj){
      if(defaults[i].value == obj.value){
          occurences++;
      }
    });
    if(len == occurences){
        toggle.hide();
    }else{
        toggle.show(); 
    }
  }
  eles.each(function (i, ele) {
    defaults[i] = {
      'id': this.id,
      'value': this.value
    };
  });
  eles.on('keyup propertychange change paste input focusout', function (e) {
    checkEmpty(eles, btn);
  });
});

Your working example

答案 1 :(得分:1)

我希望jquery-form-observe插件能满足您的要求。结帐这个

http://code.google.com/p/jquery-form-observe/