diff --git a/BudgetMasterServer/src/main/resources/static/js/customSelect.js b/BudgetMasterServer/src/main/resources/static/js/customSelect.js
index 0d7a626616b2eeacc1fddc6d061378eba414b36a..61491f8c57cbf3e5d9ecead171f1875dd2904b22 100644
--- a/BudgetMasterServer/src/main/resources/static/js/customSelect.js
+++ b/BudgetMasterServer/src/main/resources/static/js/customSelect.js
@@ -3,9 +3,17 @@ $(document).ready(function()
     initCustomSelects();
 });
 
+let allCustomSelects = [];
+
 function initCustomSelects()
 {
-    let allCustomSelects = [];
+    for(let i = 0; i < allCustomSelects.length; i++)
+    {
+        let currentCustomSelect = allCustomSelects[i];
+        currentCustomSelect.destroy();
+    }
+
+    allCustomSelects = [];
 
     let selectorCategorySelect = '.category-select-wrapper';
     let transactionCategorySelects = document.querySelectorAll(selectorCategorySelect);
@@ -91,15 +99,18 @@ class CustomSelect
     {
         let self = this;
         let customSelectTrigger = document.querySelector(this.selector);
-        customSelectTrigger.addEventListener('click', function()
+
+        this.listenerClick = function()
         {
             if(!self.isDisabled())
             {
                 self.open();
             }
-        });
+        };
+
+        customSelectTrigger.addEventListener('click', this.listenerClick);
 
-        customSelectTrigger.addEventListener("keydown", function(event)
+        this.listenerKeyDown =  function(event)
         {
             if(event.key === "Escape")
             {
@@ -107,22 +118,44 @@ class CustomSelect
             }
 
             self.jumpToItemByFirstLetter(event.key);
-        });
+        };
+
+        customSelectTrigger.addEventListener("keydown", this.listenerKeyDown);
+
+        this.listenerMouseDown = function(event)
+        {
+            self.confirmItem(this);
+            event.stopPropagation();
+        };
 
         for(const option of document.querySelectorAll(this.selector + ' .custom-select-option'))
         {
-            option.addEventListener('mousedown', function(event)
-            {
-                self.confirmItem(this);
-                event.stopPropagation();
-            })
+            option.addEventListener('mousedown', this.listenerMouseDown);
         }
 
         this.resetSelectedItemId()
 
-        customSelectTrigger.addEventListener('focusout', () => {
-            this.close();
-        });
+        this.listenerFocusOut = function() {
+            self.close();
+        };
+
+        customSelectTrigger.addEventListener('focusout', this.listenerFocusOut);
+    }
+
+    destroy()
+    {
+        let customSelectTrigger = document.querySelector(this.selector);
+
+        customSelectTrigger.removeEventListener('click', this.listenerClick);
+
+        customSelectTrigger.removeEventListener("keydown", this.listenerKeyDown);
+
+        for(const option of document.querySelectorAll(this.selector + ' .custom-select-option'))
+        {
+            option.removeEventListener('mousedown', this.listenerMouseDown);
+        }
+
+        customSelectTrigger.removeEventListener('focusout', this.listenerFocusOut);
     }
 
     isDisabled()
diff --git a/BudgetMasterServer/src/main/resources/static/js/transactionImport.js b/BudgetMasterServer/src/main/resources/static/js/transactionImport.js
index f18ff642052e31d32a1dc1b2fa160e24954a31ea..cc29ec50a45955a9bab869cdd3c37c20e36623af 100644
--- a/BudgetMasterServer/src/main/resources/static/js/transactionImport.js
+++ b/BudgetMasterServer/src/main/resources/static/js/transactionImport.js
@@ -40,6 +40,13 @@ function initCsvTransactions()
 {
     initCsvTransactionForms();
     initCsvTransactionButtons();
+
+    initCustomSelects();
+
+    M.FloatingActionButton.init(document.querySelectorAll('.edit-transaction-button'), {
+        direction: 'left',
+        hoverEnabled: false
+    });
 }
 
 function initCsvTransactionForms()
diff --git a/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/CsvImportTest.java b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/CsvImportTest.java
index e5dcff091fbe6312e401aa6e760282d8a031800e..70ea4e3805482a30c3f1f1baa57ee5fd57081cc3 100644
--- a/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/CsvImportTest.java
+++ b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/CsvImportTest.java
@@ -371,6 +371,14 @@ class CsvImportTest extends SeleniumTestBase
 		wait.until(ExpectedConditions.invisibilityOfElementLocated(By.className("transaction-import-row-skipped")));
 
 		assertThat(driver.findElements(By.className("transaction-import-row-skipped"))).isEmpty();
+
+		// check if category select is working
+		rows = driver.findElements(By.className("transaction-import-row"));
+		final WebElement categorySelect = rows.get(0).findElement(By.cssSelector(".category-select-wrapper .custom-select"));
+		categorySelect.click();
+		rows.get(0).findElements(By.cssSelector(".category-select-wrapper .custom-select-item-name")).stream()
+				.filter(webElement -> webElement.getText().equals("sdfdsf"))
+				.findFirst().orElseThrow().click();
 	}
 
 	@Test