diff --git a/url-form-edit-node.js b/url-form-edit-node.js
new file mode 100644
index 0000000..99f3a49
--- /dev/null
+++ b/url-form-edit-node.js
@@ -0,0 +1,15 @@
+jQuery().ready(function(){
+    jQuery("div.field-type-url div.field-value-target-window input[type=checkbox]").click(function(){
+        // elem = jQuery("div.field-type-url div.field-value-target");
+        elem = jQuery(this).parents("div.field-value").prev("div.field-value-target").children("div.form-item");
+        
+        if (elem.hasClass('form-disabled')) {
+          elem.removeClass('form-disabled');
+          elem.children("input").attr('disabled', false);
+        }
+        else {
+          elem.addClass('form-disabled');
+          elem.children("input").attr('disabled', true).val("");
+        }
+    });
+});
\ No newline at end of file
diff --git a/url.field.css b/url.field.css
index 0e9e839..e8788d5 100644
--- a/url.field.css
+++ b/url.field.css
@@ -1,5 +1,11 @@
 div.field-type-url div.field-value-url,
+div.field-type-url div.field-value-target,
+div.field-type-url div.field-value-target-window,
 div.field-type-url div.field-value-title {
   float: left;
   margin-right: 1em;
 }
+
+div.field-type-url div.field-value-target-window {
+    margin-top: 25px;
+}
diff --git a/url.module b/url.module
index 3f9eba6..1980709 100644
--- a/url.module
+++ b/url.module
@@ -28,6 +28,7 @@ function url_field_info() {
     'instance_settings' => array(
       'title_field' => 0,
       'title_fetch' => 0,
+      'allow_target' => 0,
     ),
     'default_widget' => 'url_external',
     'default_formatter' => 'url_default',
@@ -53,6 +54,12 @@ function url_field_instance_settings_form($field, $instance) {
     '#title' => t('Attempt to fetch the title value from the URL if the <em>Title field</em> is empty.'),
     '#default_value' => $settings['title_fetch'],
   );
+  $form['allow_target'] = array(
+    '#type' => 'checkbox',
+    '#title' => t('Enable <em>Target</em> field'),
+    '#default_value' => $settings['allow_target'],
+    '#description' => t('The <code>target</code> attribute is applied when the link is displayed.'),
+  );
 
   return $form;
 }
@@ -68,6 +75,9 @@ function url_field_load($entity_type, $entities, $field, $instances, $langcode,
       }
       else {
         $item['attributes'] = unserialize($item['attributes']);
+        if(!empty($item['attributes']['target'])) {
+            $item['target'] = $item['attributes']['target'];
+        }
       }
     }
   }
@@ -99,6 +109,16 @@ function url_field_presave($entity_type, $entity, $field, $instance, $langcode,
 
     // Trim any spaces around the URL title.
     $item['title'] = isset($item['title']) && is_string($item['title']) ? trim($item['title']) : '';
+    
+    if($item['target_new_window']) {
+        $item['attributes']['target'] = "_BLANK";
+    }
+    else if(!empty($item['target'])) {
+        $item['attributes']['target'] = $item['target'];
+    }
+    else {
+        $item['attributes']['target'] = '';
+    }
 
     // Serialize the attributes array.
     $item['attributes'] = !empty($item['attributes']) && is_array($item['attributes']) ? serialize($item['attributes']) : NULL;
@@ -186,6 +206,34 @@ function url_field_widget_form($form, &$form_state, $field, $instance, $langcode
       '#default_value' => isset($items[$delta]['title']) ? $items[$delta]['title'] : '',
     );
   }
+  
+  if (!empty($settings['allow_target'])) {
+    $element['target'] = array(
+      '#type' => 'textfield',
+      '#title' => t('Target attribute.'),
+      '#size' => 25,
+      '#maxlength' => 50,
+      '#weight' => 15,
+      '#prefix' => '<div class="field-value field-value-target">',
+      '#suffix' => '</div>',
+      '#element_validate' => array('_validate_attribute_target'),
+    );
+    
+    if(!empty($items[$delta]['target']) && $items[$delta]['target'] == "_BLANK") {
+        $element['target']['#disabled'] = TRUE;
+        $element['#default_value'] = '';
+        
+    }
+    
+    $element['target_new_window'] = array(
+        '#type' => 'checkbox',
+        '#title' => t('Open in a new Window'),
+        '#default_value' => (!empty($items[$delta]['target']) && $items[$delta]['target'] == "_BLANK"),
+        '#weight' => 16,
+        '#prefix' => '<div class="field-value field-value-target-window">',
+        '#suffix' => '</div>',
+    );
+  }
 
   // Exposing the attributes array in the widget is left for alternate and more
   // advanced field widgets.
@@ -206,6 +254,31 @@ function url_field_widget_form($form, &$form_state, $field, $instance, $langcode
 }
 
 /**
+ * Implements hook_form_alter()
+ */
+function url_form_alter(&$form, &$form_state, $form_id) {
+  switch ($form["#entity_type"]) {
+    case 'node':
+      $form['#after_build'][] = 'url_field_after_build';
+      break;
+  }
+}
+
+function url_field_after_build($form, &$form_state) {
+    drupal_add_js(drupal_get_path('module', 'url'). '/url-form-edit-node.js', 'file');
+    return $form;
+}
+
+/**
+ * Validates the target arrtibute. Alpabetic without saces. 
+ */
+function _validate_attribute_target($element, &$form_state) {
+  if(!empty($element['#value']) && ! preg_match('/^[_\-a-zA-Z]+$/', $element['#value']) ) {
+      form_error($element, t('The "!name" option must contain a valid value. You may either leave the text field empty or enter a string with letters only and without spaces.', array('!name' => t($element['#title']))));
+  }
+}
+
+/**
  * Implements hook_field_prepare_view().
  */
 function url_field_prepare_view($entity_type, $entities, $field, $instances, $langcode, &$items) {
@@ -233,6 +306,7 @@ function url_field_formatter_info() {
     'settings' => array(
       'trim_length' => 80,
       'nofollow' => FALSE,
+      'allow_target' => FALSE,
     ),
   );
 
@@ -261,6 +335,12 @@ function url_field_formatter_settings_form($field, $instance, $view_mode, $form,
     '#default_value' => $settings['nofollow'],
   );
 
+  $element['allow_target'] = array(
+    '#type' => 'checkbox',
+    '#title' => t('Allows to specify the <code>target</code> attribute to each link'),
+    '#default_value' => $settings['allow_target'],
+  );
+
   return $element;
 }
 
@@ -283,6 +363,10 @@ function url_field_formatter_settings_summary($field, $instance, $view_mode) {
   if (!empty($settings['nofollow'])) {
     $summary[] = t('Add rel="nofollow"');
   }
+  
+  if (!empty($settings['allow_target'])) {
+    $summary[] = t('Allow to specify <code>target</code> to links');
+  }
 
   return implode('<br />', $summary);
 }
@@ -300,6 +384,9 @@ function url_field_formatter_prepare_view($entity_type, $entities, $field, $inst
       if (!empty($settings['nofollow'])) {
         $item['options']['attributes']['rel'] = 'nofollow';
       }
+      if (!empty($settings['allow_target']) && !empty($item['attributes']['target'])) {
+        $item['options']['attributes']['target'] = $item['attributes']['target'];
+      }
     }
   }
 }
