diff --git a/dev/js/src/datepicker.js b/dev/js/src/datepicker.js
index 8ae5267..fe9e97d 100644
--- a/dev/js/src/datepicker.js
+++ b/dev/js/src/datepicker.js
@@ -36,6 +36,7 @@
       return Object.create(this)._init();
     },
 
+
     // Init datepicker
     _init : function () {
       this._selected = [];
@@ -93,6 +94,10 @@
       this._click = cb;
     },
 
+
+    input : function () {
+      return this._input;
+    },
     
     /**
      * Show the datepicker.
@@ -120,10 +125,40 @@
          (today.getMonth() + 1));
 
       // Append all helpers
-      this._element.appendChild(this._monthHelper());
-      this._element.appendChild(this._yearHelper());
-      this._element.appendChild(this._dayHelper());
-      this._element.appendChild(this._stringHelper());
+      e.appendChild(this._monthHelper());
+      e.appendChild(this._yearHelper());
+      e.appendChild(this._dayHelper());
+      this._input = e.appendChild(this._stringHelper());
+
+      // Always focus
+      e.addEventListener(
+        'mousedown',
+        function (ev) {
+          this._inField = true
+        }.bind(this)
+      );
+
+      e.addEventListener(
+        'mouseup',
+        function (ev) {
+          this._inField = false;
+          this._input.focus();
+        }.bind(this)
+      );
+
+      this._input.addEventListener(
+        'blur',
+        function (ev) {
+          if (!this._inField) {
+            if (this.fromString(this._input.value)) {
+              this.store();
+            };
+          };
+          ev.halt();
+        }.bind(this)
+      );
+
+      this._input.focus();
 
       return this._element;
     },
diff --git a/dev/js/src/vc/doc.js b/dev/js/src/vc/doc.js
index 67bf37a..87b7057 100644
--- a/dev/js/src/vc/doc.js
+++ b/dev/js/src/vc/doc.js
@@ -441,7 +441,7 @@
       // Show datepicker
       if (this.type() === 'date') {
         var dp = KorAP._vcDatePicker;
-        dp.fromString(v)
+        dp.fromString(v);
 
         // Todo: change this
         dp.onclick(function (selected) {
@@ -467,16 +467,7 @@
           this._valueE
         );
 
-        dpElem.focus();
-        /*
-          dpElem.addEventListener('blur', function (e) {
-          e.halt();
-          
-          // Remove datepicker
-          // TODO: If focus is not set to string input
-          that._element.removeChild(this);
-          });
-        */
+        dp.input().focus();
       }
       else {
         var regex = this.type() === 'regex' ? true : false;
