diff --git a/js/keyupdelay.js b/js/keyupdelay.js
index 89d44c8..f2dee9d 100755
--- a/js/keyupdelay.js
+++ b/js/keyupdelay.js
@@ -22,13 +22,19 @@
         if (/chrom(e|ium)/.test(navigator.userAgent.toLowerCase())) {
           if ($(input_selector).attr('type') !== 'email') {
             $(input_selector).focus(function () {
-              $(this)[0].setSelectionRange(last_tape, last_tape);
+              var type = $(this).attr('type');
+              if (type && type.match(/^(text|search|password|tel|url)$/i) || !type) {
+                $(this)[0].setSelectionRange(last_tape, last_tape);
+              }
             });
           }
         }
         else {
           $(input_selector).focus(function () {
-            $(this)[0].setSelectionRange(last_tape, last_tape);
+            var type = $(this)[0].attr('type');
+            if (type && type.match(/^(text|search|password|tel|url)$/i) || !type) {
+              $(this)[0].setSelectionRange(last_tape, last_tape);
+            }
           });
         }
       });
diff --git a/unique_field_ajax.module b/unique_field_ajax.module
index 114bb66..b40bad0 100644
--- a/unique_field_ajax.module
+++ b/unique_field_ajax.module
@@ -46,55 +46,56 @@ function unique_field_ajax_form_field_config_edit_form_alter(&$form, FormStateIn
     'entity_reference',
     'path',
     'uri',
+    'integer',
   ];
   if (!$field->getFieldStorageDefinition()->isMultiple()) {
     if (in_array($field->getType(), $unique_field_ajax_types)) {
 
-      $form['third_party_settings']['unique_field_ajax']['unique'] = array(
+      $form['third_party_settings']['unique_field_ajax']['unique'] = [
         '#type' => 'checkbox',
         '#title' => t("Unique"),
         '#default_value' => $field->getThirdPartySetting('unique_field_ajax', 'unique'),
         '#weight' => -10,
-      );
+      ];
 
-      $form['third_party_settings']['unique_field_ajax']['per_lang'] = array(
+      $form['third_party_settings']['unique_field_ajax']['per_lang'] = [
         '#type' => 'checkbox',
         '#title' => t("Per Language"),
         '#description' => t("Do not allow duplicated content per language"),
         '#default_value' => $field->getThirdPartySetting('unique_field_ajax', 'per_lang'),
         '#weight' => -9,
-        '#states' => array(
-          'visible' => array(
-            ':input[name="third_party_settings[unique_field_ajax][unique]"]' => array('checked' => TRUE)
-          ),
-        ),
-      );
+        '#states' => [
+          'visible' => [
+            ':input[name="third_party_settings[unique_field_ajax][unique]"]' => ['checked' => TRUE],
+          ],
+        ],
+      ];
 
-      $form['third_party_settings']['unique_field_ajax']['use_ajax'] = array(
+      $form['third_party_settings']['unique_field_ajax']['use_ajax'] = [
         '#type' => 'checkbox',
         '#title' => t("Use Ajax"),
         '#description' => t("Use ajax for validation."),
         '#default_value' => $field->getThirdPartySetting('unique_field_ajax', 'use_ajax'),
         '#weight' => -8,
-        '#states' => array(
-          'visible' => array(
-            ':input[name="third_party_settings[unique_field_ajax][unique]"]' => array('checked' => TRUE)
-          ),
-        ),
-      );
+        '#states' => [
+          'visible' => [
+            ':input[name="third_party_settings[unique_field_ajax][unique]"]' => ['checked' => TRUE],
+          ],
+        ],
+      ];
 
-      $form['third_party_settings']['unique_field_ajax']['message'] = array(
+      $form['third_party_settings']['unique_field_ajax']['message'] = [
         '#type' => 'textarea',
         '#title' => t("Error message"),
         '#description' => t("The message to show under the field when the value is not unique"),
         '#default_value' => $field->getThirdPartySetting('unique_field_ajax', 'message'),
         '#weight' => -7,
-        '#states' => array(
-          'visible' => array(
-            ':input[name="third_party_settings[unique_field_ajax][unique]"]' => array('checked' => TRUE)
-          ),
-        ),
-      );
+        '#states' => [
+          'visible' => [
+            ':input[name="third_party_settings[unique_field_ajax][unique]"]' => ['checked' => TRUE],
+          ],
+        ],
+      ];
 
     }
   }
@@ -138,6 +139,7 @@ function unique_field_ajax_field_widget_form_alter(&$element, FormStateInterface
 /**
  * @param array $form
  * @param \Drupal\Core\Form\FormStateInterface $form_state
+ *
  * @return mixed
  */
 function _unique_field_ajax(array &$form, FormStateInterface $form_state) {
@@ -162,23 +164,28 @@ function _unique_field_ajax_process($element, FormStateInterface &$form_state, &
   $field_definition = $element['value']['#unique_field_ajax_settings']['field_definition'];
   $field_label = $field_definition->label();
   $wrapper = 'unique-' . $field_name;
-  if(!empty($form['#attached']['library']) && !in_array('unique_field_ajax/unique_event',$form['#attached']['library'])){
+  if (!empty($form['#attached']['library']) && !in_array('unique_field_ajax/unique_event', $form['#attached']['library'])) {
     $form['#attached']['library'][] = 'unique_field_ajax/unique_event';
   }
-  $settings = array('id' => '#'.$wrapper.' input');
+  $settings = ['id' => '#' . $wrapper . ' input'];
   $form['#attached']['drupalSettings']['unique_field_ajax'][] = $settings;
   $element['value']['#ajax'] = [
     'callback' => '_unique_field_ajax',
     'event' => 'finishedinput',
     'wrapper' => $wrapper,
-    'progress' => array(
+    'progress' => [
       'type' => 'throbber',
-      'message' => t('Verifying @field_label...', array('@field_label' => $field_label)),
-    )
+      'message' => t('Verifying @field_label...', ['@field_label' => $field_label]),
+    ],
   ];
   $element['value']['#prefix'] = '<div id="' . $wrapper . '">';
   $element['value']['#suffix'] = '</div>';
-  $value = $form_state->getValue($field_name);
+  if ($element['value'] === 'number') {
+    $value = $form_state->getUserInput()[$field_name];
+  }
+  else {
+    $value = $form_state->getValue($field_name);
+  }
   $value = !empty($value) ? $value[0]['value'] : NULL;
 
   $entity = $form_state->getFormObject()->getEntity();
@@ -206,8 +213,8 @@ function unique_field_ajax_validate_unique($element, FormStateInterface $form_st
   // If !isset langcode set it to 0.
   $langcode = (
     !empty($form_state->getValues()['langcode'][0]['value']) &&
-      $form_state->getValues()['langcode'][0]['value']) ?
-      $form_state->getValues()['langcode'][0]['value'] : '0';
+    $form_state->getValues()['langcode'][0]['value']) ?
+    $form_state->getValues()['langcode'][0]['value'] : '0';
 
   $field_name = $element['#unique_field_ajax_settings']['field_name'];
   $field_definition = $element['#unique_field_ajax_settings']['field_definition'];
@@ -218,7 +225,7 @@ function unique_field_ajax_validate_unique($element, FormStateInterface $form_st
   // If field is not unique set error.
   $valid = unique_field_ajax_is_unique($entity_type, $langcode, $field_name, $value[0]['value'], $entity->bundle(), $element['#unique_field_ajax_settings']['per_lang'], $entity);
   if (!$valid) {
-    $form_state->setErrorByName($field_name, t('The field @field_label has to be unique.', array('@field_label' => $field_label)));
+    $form_state->setErrorByName($field_name, t('The field @field_label has to be unique.', ['@field_label' => $field_label]));
     $form_state->setRebuild();
   }
 }
@@ -257,7 +264,7 @@ function unique_field_ajax_is_unique($entity_type, $langcode, $field_name, $fiel
 
   if (!empty($entities)) {
     if ($id = $entity->id()) {
-      if (!in_array($id, $entities)) {
+      if (in_array($id, $entities)) {
         return FALSE;
       }
     }
