diff --git a/public/src/app.js b/public/src/app.js
index 8d8568e9cf..2a111b911d 100644
--- a/public/src/app.js
+++ b/public/src/app.js
@@ -574,12 +574,13 @@ app.cacheBuster = null;
 		var inputEl = options.inputEl;
 		var template = options.template || 'partials/quick-search-results';
 		var searchTimeoutId = 0;
-		inputEl.on('keyup', function () {
+		var currentVal = inputEl.val();
+		inputEl.off('keyup').on('keyup', function () {
 			if (searchTimeoutId) {
 				clearTimeout(searchTimeoutId);
 				searchTimeoutId = 0;
 			}
-			if (inputEl.val().length < 3) {
+			if (inputEl.val().length < 3 || inputEl.val() === currentVal) {
 				return;
 			}
 
@@ -618,15 +619,15 @@ app.cacheBuster = null;
 		var searchInput = $('#search-fields input');
 		var quickSearchResults = $('#quick-search-results');
 
-		$('#search-form .advanced-search-link').on('mousedown', function () {
+		$('#search-form .advanced-search-link').off('mousedown').on('mousedown', function () {
 			ajaxify.go('/search');
 		});
 
-		$('#search-form').on('submit', function () {
+		$('#search-form').off('submit').on('submit', function () {
 			searchInput.blur();
 		});
-		searchInput.on('blur', dismissSearch);
-		searchInput.on('focus', function () {
+		searchInput.off('blur').on('blur', dismissSearch);
+		searchInput.off('focus').on('focus', function () {
 			if (searchInput.val() && quickSearchResults.children().length) {
 				quickSearchResults.removeClass('hidden').show();
 			}
@@ -645,7 +646,7 @@ app.cacheBuster = null;
 			}, 200);
 		}
 
-		searchButton.on('click', function (e) {
+		searchButton.off('click').on('click', function (e) {
 			if (!config.loggedIn && !app.user.privileges['search:content']) {
 				app.alert({
 					message: '[[error:search-requires-login]]',
@@ -660,7 +661,7 @@ app.cacheBuster = null;
 			return false;
 		});
 
-		$('#search-form').on('submit', function () {
+		$('#search-form').off('submit').on('submit', function () {
 			var input = $(this).find('input');
 			require(['search'], function (search) {
 				var data = search.getSearchPreferences();