diff --git a/draggableviews.module b/draggableviews.module
index ea0bd8d..e294484 100644
--- a/draggableviews.module
+++ b/draggableviews.module
@@ -75,8 +75,14 @@ function draggableviews_form_alter(&$form, &$form_state, $form_id) {
       $form['actions']['submit']['#access'] = FALSE;
       return;
     }
-    $label = $form['view']['#value']->field['draggableviews']->options['draggableviews']['save_button_label'];
-    $form['actions']['submit']['#value'] = t($label);
+    $options = $form['view']['#value']->field['draggableviews']->options['draggableviews'];
+    $form['actions']['submit']['#value'] = t($options['save_button_label']);
+
+    if ($options['ajax']){
+      $form['actions']['submit']['#ajax'] = array(
+        'callback' => 'draggableviews_view_draggabletable_form_ajax'
+      );
+    }
   }
 }
 
@@ -129,6 +135,8 @@ function draggableviews_preprocess_views_view_list(&$vars) {
   drupal_add_library('system', 'ui.sortable');
   // Add setting of the row class.
   $js_setting = array('draggableviews_row_class' => $class);
+  // Add setting whether ajax enabled or not.
+  $js_setting['draggableviews_ajax'] = $vars['view']->field['draggableviews']->options['draggableviews']['ajax'];
   drupal_add_js($js_setting, 'setting');
   // Add custom js and css.
   drupal_add_js(drupal_get_path('module', 'draggableviews') . '/js/draggableviews_list.js');
@@ -196,6 +204,21 @@ function draggableviews_contextual_links_view_alter(&$element, $items) {
 }
 
 /**
+ * Ajax draggabletable submit handler.
+ */
+function draggableviews_view_draggabletable_form_ajax($form, $form_state){
+  // Find the form element
+  $form_element = "form:has(input[name=form_build_id][value='{$form['form_build_id']['#value']}'])";
+
+  // Remove warning and asterisk.
+  return array('#type' => 'ajax', '#commands' => array(
+    ajax_command_remove("$form_element div.tabledrag-changed-warning"),
+    ajax_command_remove("$form_element span.tabledrag-changed"),
+    ajax_command_remove("$form_element div.draggableviews-changed-warning"),
+  ));
+}
+
+/**
  * Get the draggable views weight sort of a view if there is one and return its
  * ID. If there are multiple of these sorts the first is returned.
  *
diff --git a/js/draggableviews_list.js b/js/draggableviews_list.js
index 4cd93e6..da0fca1 100644
--- a/js/draggableviews_list.js
+++ b/js/draggableviews_list.js
@@ -17,13 +17,20 @@
         });
         if (!$(this).hasClass('draggableviews-changed')) {
           $('<div class="draggableviews-changed-warning messages warning">' + Drupal.t('Changes made in this list will not be saved until the form is submitted.') + '</div>')
-            .insertBefore($(this).parents('.views-form')).hide().fadeIn('slow');
+            .insertBefore($(this).parents('form div')).hide().fadeIn('slow');
           $(this).addClass('draggableviews-changed');
         }
+        // If Ajax enabled, we should submit the form.
+        if (Drupal.settings.draggableviews_ajax) {
+          $(this).parent().parent().find('#edit-submit').trigger('mousedown');
+        }
       },
       containment: 'parent',
       cursor: 'move'
     });
+    if (Drupal.settings.draggableviews_ajax) {
+      $('.views-form .' + Drupal.settings.draggableviews_row_class).parent().parent().find('#edit-submit').hide();
+    }
   }
  }
 })(jQuery);
diff --git a/views/draggableviews_handler_field_draggable.inc b/views/draggableviews_handler_field_draggable.inc
index 1d714de..bc1fab1 100644
--- a/views/draggableviews_handler_field_draggable.inc
+++ b/views/draggableviews_handler_field_draggable.inc
@@ -14,6 +14,7 @@ class draggableviews_handler_field_draggable extends views_handler_field {
     $options['draggableviews'] = array(
       'contains' => array(
         'save_button_label' => array('default' => 'Save'),
+        'ajax' => array('default' => FALSE),
       ),
     );
 
@@ -41,6 +42,13 @@ class draggableviews_handler_field_draggable extends views_handler_field {
       '#description' => t("Allow to change Save button Label."),
       '#default_value' => $this->options['draggableviews']['save_button_label'],
     );
+
+    $form['draggableviews']['ajax'] = array(
+      '#type' => 'checkbox',
+      '#title' => t('Ajax'),
+      '#description' => t('Use ajax in draggable form.'),
+      '#default_value' => $this->options['draggableviews']['ajax'],
+    );
   }
 
   function render($values) {
