Select/submit only changed form fields with jQuery

前端 未结 8 1606
谎友^
谎友^ 2020-12-23 10:45

I\'m looking for a way to submit only changed form fields to the server. So, let\'s say I have a form

8条回答
  •  误落风尘
    2020-12-23 11:21

    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;
            });
        }
    });
    

提交回复
热议问题