我想创建一个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>
答案 0 :(得分:0)
您可以这样做:
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;
我们的想法是在每次保存时存储所有输入的值,并在下次保存时使用它们以查看哪些已更改。