Skip to content

Commit 2e9cc5e

Browse files
committed
Invalidate a required checkbox group on form init if it has no default checked values (#184)
1 parent 81aa7b6 commit 2e9cc5e

File tree

2 files changed

+7
-2
lines changed

2 files changed

+7
-2
lines changed

Source/Umbraco/JS/FormEditor/FormEditorAsync.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@
5353
}
5454
$scope.formData[fieldName] = values;
5555
if (required) {
56-
$scope.getFormPage(pageNumber)[fieldName].$setValidity("required", values != undefined && values.length != 0);
56+
$scope.setMultiSelectValidity(fieldName, pageNumber, values != undefined && values.length != 0);
5757
}
5858
};
5959

@@ -62,6 +62,10 @@
6262
return values.indexOf(value) >= 0;
6363
};
6464

65+
$scope.setMultiSelectValidity = function (fieldName, pageNumber, valid) {
66+
$scope.getFormPage(pageNumber)[fieldName].$setValidity("required", valid);
67+
}
68+
6569
// this exposes the form validation to a global scope
6670
$scope.globalValidateForm = function () {
6771
var deferred = $q.defer();

Source/Umbraco/Views/Partials/FormEditor/FieldsAsync/core.checkboxgroup.cshtml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
1+
@using FormEditor.Rendering
12
@inherits Umbraco.Web.Mvc.UmbracoViewPage<FormEditor.Fields.CheckboxGroupField>
23
<div class="form-group @(Model.Mandatory ? "required" : null) @(Model.Invalid ? "has-error" : null)" name="@Model.FormSafeName" ng-model="@Model.FormSafeName" action-field="@Model.FormSafeName">
34
<label>@Model.Label</label>
45
@foreach(var fieldValue in Model.FieldValues)
56
{
67
<div class="checkbox">
78
<label>
8-
<input type="checkbox" ng-checked="hasMultiSelectValue('@Model.FormSafeName', '@HttpUtility.JavaScriptStringEncode(fieldValue.Value)')" ng-click="toggleMultiSelectValue('@Model.FormSafeName', @ViewBag.FormEditorPageNumber, '@fieldValue.Value', @Model.Mandatory.ToString().ToLowerInvariant())" />
9+
<input type="checkbox" ng-checked="hasMultiSelectValue('@Model.FormSafeName', '@HttpUtility.JavaScriptStringEncode(fieldValue.Value)')" ng-click="toggleMultiSelectValue('@Model.FormSafeName', @ViewBag.FormEditorPageNumber, '@fieldValue.Value', @Model.Mandatory.ToString().ToLowerInvariant())" ng-init="@(Model.Mandatory && fieldValue == Model.FieldValues.First() && Model.HasDefaultValue() == false ? string.Format("setMultiSelectValidity('{0}', {1}, false)", Model.FormSafeName, ViewBag.FormEditorPageNumber) : null)"/>
910
@fieldValue.Value
1011
</label>
1112
</div>

0 commit comments

Comments
 (0)