在Form Submit上仅使用已更改的输入字段创建JSON

时间:2016-11-29 22:50:31

标签: javascript jquery json forms

我想创建一个JSON,其中只包含在提交表单之前更改的输入字段。

如何以JSON的形式保留每个更改的值?

$(document).ready(function() {

    $('#save').click(saveChangedValues);

}



function saveChangedValues(e) {

    e.preventDefault();

    var fields = $( "#frmStudInfo :input" ).serializeArray();

    trackFormDataChanges(fields);


   //make a ajax call with json only with the changed fields

   $.ajax{(
   )}

}

var finalJSON = {};

function trackFormDataChanges(fields){

    $.each( fields, function( i, field ) {
        //create final json
    });
}
<form id="frmStudInfo">

    Name <input type="text" id="name" name="name" >
    Date <input type="date" id="bdate" name="bdate">
    ID <input type="number" id="stdID" name="stdID"> 
    <input type="submit" id="save" value="Save" /> 

 <form>

1 个答案:

答案 0 :(得分:0)

您可以这样做:

&#13;
&#13;
var prevFields;
$("#save").click(function(e){
  e.preventDefault();
  var fields = $( "#frmStudInfo :input" ).serializeArray();
  var changedInputs;
  if(prevFields){
    changedInputs = fields.filter(function(v){
      prevValue = prevFields.find(val => val.name === v.name);
      return !prevValue || v.value !== prevValue.value;
    });
  }else{
    changedInputs = fields;
  }
  console.log("changed inputs", changedInputs);
  prevFields = fields;
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form id="frmStudInfo">
Name <input type="text" id="name" name="name" >
Date <input type="date" id="bdate" name="bdate">
ID <input type="number" id="stdID" name="stdID"> 
<input id="save" type="submit" id="save" value="Save" /> 
</form>
&#13;
&#13;
&#13;

我们的想法是在每次保存时存储所有输入的值,并在下次保存时使用它们以查看哪些已更改。