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"); }); }