diff --git a/src/core/js/form_elements.js b/src/core/js/form_elements.js
index 006edcfa0b89903e2f566d73c459c5fb51bc4fd5..62b1b01c17ac1a98e9109b8570be627fdd4930c8 100644
--- a/src/core/js/form_elements.js
+++ b/src/core/js/form_elements.js
@@ -1243,9 +1243,11 @@ var form_elements = new function () {
         const options = config.options;
         const multiple = config.multiple;
         const select = $(form_elements._make_select(multiple));
+
         for (let option of options) {
             select.append(form_elements._make_option(option.value, option.label));
         }
+        form_elements.init_select_picker(select[0], config.value);
 
         const ret = $(form_elements._make_field_wrapper(config.name));
         const label = form_elements._make_input_label_str(config);
diff --git a/test/core/js/modules/form_elements.js.js b/test/core/js/modules/form_elements.js.js
index 1fc734cd26881416338add2b7ca4a243495829a9..a815d7b76b61dfdd8201e7005da2ea21f71ff395 100644
--- a/test/core/js/modules/form_elements.js.js
+++ b/test/core/js/modules/form_elements.js.js
@@ -660,20 +660,30 @@ QUnit.test("select_input caching", async function (assert) {
         ],
     }
     const form_wrapper = $(form_elements.make_form(config));
-    await sleep(500);
+    $("body").append(form_wrapper);
+    await sleep(200);
+    assert.equal(xml2str(form_wrapper[0]), "");
     const form = form_wrapper.find("form");
     assert.equal(form.find("select").length, 1);
-    assert.equal(xml2str(form[0]), "");
 
 
-    var cache = {};
-    var field = $(form_elements.get_fields(form[0], "sex"));
+    // write to cache
+    const cache = {};
+    const field = $(form_elements.get_fields(form[0], "sex"));
     field.find("select").val("f");
-    assert.equal(form_elements.get_cache_value(field[0]), "f", "value set");
+    assert.equal(form_elements.get_cache_value(field[0]), "f", "initial value set");
     assert.equal(form_elements.get_cache_key(form[0], field[0]), "form_elements.cache.test-form.sex", "cache key correct");
 
     form_elements.cache_form(cache, form[0]);
     assert.equal(cache[form_elements.get_cache_key(form[0], field[0])], "f");
+
+    // read from cache and set the value
+    field.find("select").val("m");
+    assert.equal(form_elements.get_cache_value(field[0]), "m", "different value set");
+
+    form_elements.load_cached(cache, form[0]);
+    await sleep(200);
+    assert.equal(form_elements.get_cache_value(field[0]), "f", "value back to value from cache");
 });
 
 }