diff --git a/app/assets/javascripts/gl_dropdown.js.coffee b/app/assets/javascripts/gl_dropdown.js.coffee
index 1b0d0db89542b8361aaeb3a0905b223b35f7254f..bfed7e438c404be9fe4b5c47da5dcc37fffb9ccf 100644
--- a/app/assets/javascripts/gl_dropdown.js.coffee
+++ b/app/assets/javascripts/gl_dropdown.js.coffee
@@ -24,33 +24,34 @@ class GitLabDropdownFilter
 
     # Key events
     timeout = ""
-    @input.on "keyup", (e) =>
-      keyCode = e.which
-
-      return if ARROW_KEY_CODES.indexOf(keyCode) >= 0
-
-      if @input.val() isnt "" and !$inputContainer.hasClass HAS_VALUE_CLASS
-        $inputContainer.addClass HAS_VALUE_CLASS
-      else if @input.val() is "" and $inputContainer.hasClass HAS_VALUE_CLASS
-        $inputContainer.removeClass HAS_VALUE_CLASS
-
-      if keyCode is 13
-        return false
-
-      # Only filter asynchronously only if option remote is set
-      if @options.remote
-        clearTimeout timeout
-        timeout = setTimeout =>
-          blur_field = @shouldBlur keyCode
-
-          if blur_field and @filterInputBlur
-            @input.blur()
-
-          @options.query @input.val(), (data) =>
-            @options.callback(data)
-        , 250
-      else
-        @filter @input.val()
+    @input
+      .on 'keydown', (e) ->
+        keyCode = e.which
+        e.preventDefault() if keyCode is 13
+      .on 'keyup', (e) =>
+        keyCode = e.which
+
+        return if ARROW_KEY_CODES.indexOf(keyCode) >= 0
+
+        if @input.val() isnt '' and !$inputContainer.hasClass HAS_VALUE_CLASS
+          $inputContainer.addClass HAS_VALUE_CLASS
+        else if @input.val() is '' and $inputContainer.hasClass HAS_VALUE_CLASS
+          $inputContainer.removeClass HAS_VALUE_CLASS
+
+        # Only filter asynchronously only if option remote is set
+        if @options.remote
+          clearTimeout timeout
+          timeout = setTimeout =>
+            blur_field = @shouldBlur keyCode
+
+            if blur_field and @filterInputBlur
+              @input.blur()
+
+            @options.query @input.val(), (data) =>
+              @options.callback(data)
+          , 250
+        else
+          @filter @input.val()
 
   shouldBlur: (keyCode) ->
     return BLUR_KEYCODES.indexOf(keyCode) >= 0
diff --git a/app/assets/javascripts/project.js.coffee b/app/assets/javascripts/project.js.coffee
index 3288c801388453b03653eff797cad4b2711a08b8..80ea179948d8a4b9389a11517c7cdc14a4d52f85 100644
--- a/app/assets/javascripts/project.js.coffee
+++ b/app/assets/javascripts/project.js.coffee
@@ -87,5 +87,10 @@ class @Project
         toggleLabel: (obj, $el) ->
           $el.text().trim()
         clicked: (e) ->
-          $dropdown.closest('form').submit()
+          if $('input[name="ref"]').length
+            $form = $dropdown.closest('form')
+            action = $form.attr('action')
+            divider = if action.indexOf('?') < 0 then '?' else '&'
+
+            Turbolinks.visit "#{action}#{divider}#{$form.serialize()}"
       )