diff --git a/includes/view.inc b/includes/view.inc
index d9fb43f..d1bf074 100644
--- a/includes/view.inc
+++ b/includes/view.inc
@@ -2028,7 +2028,7 @@ class view extends views_db_object {
       unset($this->query);
     }

-    $keys = array('current_display', 'display_handler', 'build_info', 'built', 'executed', 'attachment_before', 'attachment_after', 'field', 'argument', 'filter', 'sort', 'relationship', 'header', 'footer', 'empty', 'query', 'result', 'inited', 'style_plugin', 'plugin_name', 'exposed_data', 'exposed_input', 'many_to_one_tables');
+    $keys = array('current_display', 'display_handler', 'build_info', 'built', 'executed', 'attachment_before', 'attachment_after', 'field', 'argument', 'filter', 'sort', 'relationship', 'header', 'footer', 'empty', 'query', 'result', 'inited', 'style_plugin', 'plugin_name', 'exposed_data', 'exposed_input', 'many_to_one_tables', 'dom_id');
     foreach ($keys as $key) {
       if (isset($this->$key)) {
         unset($this->$key);
diff --git a/js/ajax_view.js b/js/ajax_view.js
index ce6cc52..ac413a8 100644
--- a/js/ajax_view.js
+++ b/js/ajax_view.js
@@ -57,7 +57,7 @@ Drupal.views.ajaxView = function(settings) {
   this.settings = settings;

   // Add the ajax to exposed forms.
-  this.$exposed_form = $('#views-exposed-form-'+ settings.view_name.replace(/_/g, '-') + '-' + settings.view_display_id.replace(/_/g, '-'));
+  this.$exposed_form = $('#views-exposed-form-'+ settings.view_name.replace(/_/g, '-') + '-' + settings.view_display_id.replace(/_/g, '-') + '-' + settings.view_dom_id);
   this.$exposed_form.once(jQuery.proxy(this.attachExposedFormAjax, this));

   // Add the ajax to pagers.
diff --git a/views.module b/views.module
index aab3812..b792059 100644
--- a/views.module
+++ b/views.module
@@ -1997,8 +1997,10 @@ function views_exposed_form($form, &$form_state) {

   // Let form plugins know this is for exposed widgets.
   $form_state['exposed'] = TRUE;
+
+  $view->dom_id = !empty($view->dom_id) ? $view->dom_id : md5($view->name . REQUEST_TIME . rand());
   // Check if the form was already created
-  if ($cache = views_exposed_form_cache($view->name, $view->current_display)) {
+  if ($cache = views_exposed_form_cache($view->name, $view->current_display . '-' . $view->dom_id)) {
     return $cache;
   }

@@ -2043,7 +2045,7 @@ function views_exposed_form($form, &$form_state) {

   $form['#action'] = url($view->display_handler->get_url());
   $form['#theme'] = views_theme_functions('views_exposed_form', $view, $display);
-  $form['#id'] = drupal_clean_css_identifier('views_exposed_form-' . check_plain($view->name) . '-' . check_plain($display->id));
+  $form['#id'] = drupal_clean_css_identifier('views_exposed_form-' . check_plain($view->name) . '-' . check_plain($display->id) . '-' . check_plain($view->dom_id));
 //  $form['#attributes']['class'] = array('views-exposed-form');

   // If using AJAX, we need the form plugin.
@@ -2056,7 +2058,7 @@ function views_exposed_form($form, &$form_state) {
   $exposed_form_plugin->exposed_form_alter($form, $form_state);

   // Save the form
-  views_exposed_form_cache($view->name, $view->current_display, $form);
+  views_exposed_form_cache($view->name, $view->current_display . '-' . $view->dom_id, $form);

   return $form;
 }
