           @setValidationState()
 
     onKeyDown: (event) ->
-      if event.keyCode == 8 or event.keyCode == 46
-        event.preventDefault()
-
+      if @validationRequired()
+        if event.keyCode == 8 or event.keyCode == 46
+          event.preventDefault()
+
+          @updateValue(event.target, true)
+        else
+          @updateValue(event.target, false)
+
+        @runValidation()
+      else
         @updateValue(event.target, true)
-      else
-        @updateValue(event.target, false)
-
-      @runValidation()
 
     onBlur: (_) ->
       @controlValidationTooltip(true)

      (@state.value or '').search(new RegExp(@props.params.regex)) >= 0

    validationRequired: ->
      !!@props.params.regex

    buildVisualAndHiddenValues: (extractValueRegexp, valueParts, pattern, nextVal) ->
      value = @substitute(valueParts, @getSubstitutions(extractValueRegexp, nextVal))

        else
          $el.setSelectionRange(position, position)
      else
        @setState(value: $el.value, visualValue: $el.value)

    buildExtractRegexp: (pattern) ->
      matches = @getMatches(@templateRegexp, pattern)
