diff --git a/entityreference_view_widget.module b/entityreference_view_widget.module
index e276f1b..4f65784 100755
--- a/entityreference_view_widget.module
+++ b/entityreference_view_widget.module
@@ -41,10 +41,10 @@ function entityreference_view_widget_views_data_alter(&$data) {
  * Implements hook_menu().
  */
 function entityreference_view_widget_menu() {
-  $items['entityreference_view_widget/%ctools_js/modal/%/%/%/%'] = array(
+  $items['entityreference_view_widget/%ctools_js/modal/%/%/%/%/%'] = array(
     'title' => 'Entity reference view widget modal',
     'page callback' => 'entityreference_view_widget_modal',
-    'page arguments' => array(1, 3, 4, 5, 6),
+    'page arguments' => array(1, 3, 4, 5, 6, 7),
     'access callback' => TRUE,
     'type' => MENU_CALLBACK,
   );
@@ -185,15 +185,19 @@ function entityreference_view_widget_field_widget_form(&$form, &$form_state, $fi
   $add_more_text = ($field['cardinality'] == 1) ? 'Add item' : 'Add items';
 
   $element['add_more'] = array(
-    '#markup' => ctools_modal_text_button(t($add_more_text), 'entityreference_view_widget/nojs/modal/' . $settings_selector . '/' . $instance['field_name'] . '/' . $instance['entity_type'] . '/' . $instance['bundle'], '', 'button field-add-more-submit ervw-add-items'),
-    '#element_validate' => array('entityreference_view_widget_validate'),
-    '#name' => $field['field_name'],
-    '#attached' => array(
-      'css' => array(drupal_get_path('module', 'entityreference_view_widget') . '/entityreference_view_widget.css'),
-    ),
+    '#type' => 'submit',
+    '#value' => t($add_more_text),
+    '#id' => 'add-more',
+    '#attributes' => array('class' => array('ctools-use-modal')),
     '#settings' => $settings,
   );
 
+  $form['add_more_url'] = array(
+    '#type' => 'hidden',
+    '#value' => url('entityreference_view_widget/nojs/modal/' . $settings_selector . '/' . $instance['field_name'] . '/' . $instance['entity_type'] . '/' . $instance['bundle'] . '/' . $form_state['build_info']['form_id']),
+    '#attributes' => array('class' => array('add-more-url')),
+  );
+
   foreach ($items as $delta => $item) {
     $element[$delta] = entityreference_view_widget_row($delta, $parents_path, $field['settings']['target_type'], $langcode, $item['target_id'], count($items));
   }
@@ -257,18 +261,39 @@ function entityreference_view_widget_validate($element, &$form_state, $form) {
  * @param string $settings_selector
  *   The dom selector of the settings element.
  */
-function entityreference_view_widget_modal($mode, $settings_selector, $field_name, $entity_type, $bundle) {
+function entityreference_view_widget_modal($mode, $settings_selector, $field_name, $entity_type, $bundle, $form_id) {
   ctools_include('modal');
   ctools_include('ajax');
 
   $field = field_info_field($field_name);
   $instance = field_info_instance($entity_type, $field_name, $bundle);
   $target_view = explode('|', $instance['widget']['settings']['view']);
+  $pass_args = !empty($instance['widget']['settings']['pass_argument']);
 
   $view = views_get_view($target_view[0]);
   $view->set_display($target_view[1]);
   $view->display_handler->set_option('use_ajax', TRUE);
 
+  // Get the $form_state.
+  $form_state = array(
+    'ajax' => TRUE,
+    'process_input' => FALSE,
+    'rebuild' => TRUE,
+  );
+
+  $form = ctools_modal_form_wrapper($form_id, $form_state);
+
+  // Get the entity ids.
+  $eids = array();
+  foreach ($form_state['input'][$field_name][LANGUAGE_NONE] as $record) {
+    $eids[] = $record['target_id'];
+  }
+
+  // Pass the arguments to the view.
+  if ($pass_args && !empty($eids)) {
+    $view->set_arguments(array(implode(',', $eids)));
+  }
+
   if (method_exists($view, 'preview')) {
     $html = $view->preview();
 
