diff --git a/javascript/src/QfqForm.js b/javascript/src/QfqForm.js index 6f0a7e7384532700fb985fe2fdc07edc701f7ec0..9c523b77c66570f7c0782eb5a31235b539d5a252 100644 --- a/javascript/src/QfqForm.js +++ b/javascript/src/QfqForm.js @@ -1230,6 +1230,7 @@ var QfqNS = QfqNS || {}; */ n.QfqForm.prototype.applyFormConfiguration = function (configuration) { var arrayLength = configuration.length; + var countElementArray = 0; for (var i = 0; i < arrayLength; i++) { var configurationItem = configuration[i]; var formElementName = configurationItem["form-element"]; @@ -1238,47 +1239,63 @@ var QfqNS = QfqNS || {}; continue; } try { - var element = n.Element.getElement(formElementName); - - // Cleaner way to set states for tinymce - // This triggers the event on the unaccesable textarea - // The tinymce registers a listener on the textarea - // See helper/tinyMCE.js for details - if(element.$element.hasClass('qfq-tinymce')) { - element.$element.trigger("blur", [configurationItem]); - } + var element = $('[name="' + QfqNS.escapeJqueryIdSelector(formElementName) + '"]:not([type="hidden"])'); + // checkboxes without being in form groups aren't triggered over dynamic update, we need to handle them separately. + // for checkboxes with itemList (multiple) we need the countElementArray to trigger the right box + if($(element).attr('type') !== undefined){ + if($(element).attr('type').toLowerCase() ==='checkbox'){ + if(element.length > 1 && element.length !== countElementArray){ + element = element[countElementArray]; + countElementArray++; + } + if (configurationItem.value !== undefined) { + $(element).prop('checked',configurationItem.value); + } + } + }else { + // For all other form-elements the general script is used. + element = n.Element.getElement(formElementName); + // Cleaner way to set states for tinymce + // This triggers the event on the unaccesable textarea + // The tinymce registers a listener on the textarea + // See helper/tinyMCE.js for details + if (element.$element.hasClass('qfq-tinymce')) { + element.$element.trigger("blur", [configurationItem]); + } - if (configurationItem.value !== undefined) { - element.setValue(configurationItem.value); - } + if (configurationItem.value !== undefined) { + element.setValue(configurationItem.value); + } - if (configurationItem.readonly !== undefined) { - // Readonly and disabled is the same in our domain - element.setEnabled(!configurationItem.readonly); - } + if (configurationItem.readonly !== undefined) { + // Readonly and disabled is the same in our domain + element.setEnabled(!configurationItem.readonly); + } - if (configurationItem.disabled !== undefined) { - // Readonly and disabled is the same in our domain - element.setEnabled(!configurationItem.disabled); - } + if (configurationItem.disabled !== undefined) { + // Readonly and disabled is the same in our domain + element.setEnabled(!configurationItem.disabled); + } - if (configurationItem.hidden !== undefined) { - element.setHidden(configurationItem.hidden); - } + if (configurationItem.hidden !== undefined) { + element.setHidden(configurationItem.hidden); + } - if (configurationItem.required !== undefined) { - element.setRequired(configuration.required); - if(element.$element) { - if(element.$element.is("select")) { - element.$element.prop('required', configurationItem.required); - element.$element.attr('data-required', 'yes'); - } - if(element.$element.is("input[type=hidden]")) { - console.log("Update Hidden"); - element.$element.prop("required", configurationItem.required); - } + if (configurationItem.required !== undefined) { + element.setRequired(configuration.required); + if (element.$element) { + if (element.$element.is("select")) { + element.$element.prop('required', configurationItem.required); + element.$element.attr('data-required', 'yes'); + } + if (element.$element.is("input[type=hidden]")) { + console.log("Update Hidden"); + element.$element.prop("required", configurationItem.required); + } + } } + countElementArray = 0; } } catch (e) { n.Log.error(e.message);