I\'m looking for a way to submit only changed form fields to the server. So, let\'s say I have a form
My solution
$('form').each(function(){
var $form = $(this);
if (!$form.hasClass('send-all')){
var watchedFields = 'input:not([type="hidden"]):not([type="checkbox"]), select, textarea';
$form.find(watchedFields).addClass('watched').on('change', function() {
$(this).addClass('changed');
});
$form.submit(function(e){
var data = $form.serializeArray();
// Loop fields
for (i = 0; i < data.length; i++){
$field = $form.find('[name="' + data[i].name + '"]');
// Prevent send unchanged fields
if ($field.hasClass('watched') && !$field.hasClass('changed')) $field.prop('disabled', 'disabled');
// Send changed but set to readonly before
else $field.prop('readonly', 'readonly');
}
return true;
});
}
});