如何检查表单数据是否被更改,表单上的几个字段除外?

时间:2016-09-23 12:22:04

标签: javascript jquery

我想检查是否有任何字段被更改或在表单上排除少数字段。为此,我尝试了以下字段。

$('#FormId').not('#elementId').data("changed")

但它不排除id为'elementId'的元素。

3 个答案:

答案 0 :(得分:0)

您可以执行以下操作:

// this binds the following function on any inputs type=text under #FormId
$('#FormId input[type=text]')bind("change", function(){
    // do something
});

// You can add more elements, or classes by adding commas to the selector
$('#FormId input[type=text], .anotherclass, .onemoreclass')bind("change", function(){
.
.
.
.

答案 1 :(得分:0)

我认为您要检查表单数据是否更改 这是我用过的一种方法。

  1. 创建一个变量,例如:oldForm save in ready with old value
  2. 为所有输入创建更改事件,它将触发任何更改 以下是相同的代码建议

    var oldFormData = '';
    
    $(function () {
    oldFormData == $('#FormId').serialize();
    
       $('form :input').on('change input', function () {
        var isChange = $('#FormId').serialize() !== origForm
       });
    })
    

答案 2 :(得分:0)

这是quick and dirty example

假设您要标记要使用数据属性跟踪的输入(在此示例中为data-change-tracking)。

<强> HTML

<form action="/echo/html/" method="post">
  <p>
    <label>A text input</label>
    <input data-change-tracking="true" value="abc"/>
  </p>
  <p>
    <label>A select</label>
    <select data-change-tracking="true">
      <option value="1">option 1</option>
      <option value="2">option 2</option>      
    </select>
  </p>
  <p>
    <label>A textarea</label>
    <textarea data-change-tracking="true">old</textarea>
  </p>
  <p>
    <label>Not tracked</label>
    <input value="123" />
  </p>
</form>

然后,当输入从之前的值发生变化时,我们只需添加一个dirty类:

<强>的Javascript

$(function() {
  $('[data-change-tracking]').each(function(){
    $(this).data('previousValue', this.value);
  });
  $('form').on('change', '[data-change-tracking]', function(ev) {
    if (ev.target.value !== $(ev.target).data('previousValue')) {
      $(ev.target).addClass('dirty');
    } else {
      $(ev.target).removeClass('dirty');
    }
  });
});