Skip to content

Commit d6d4aff

Browse files
authored
Merge pull request #44 from haacked/haacked/36-validate-radio-buttons
Add support for validating checkboxes/radio buttons
2 parents 15e5855 + b2668aa commit d6d4aff

File tree

7 files changed

+31
-26
lines changed

7 files changed

+31
-26
lines changed

Pages/Index.cshtml

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -147,27 +147,6 @@
147147
<script src="/dist/aspnet-validation.js"></script>
148148
<script>
149149
const service = new aspnetValidation.ValidationService(console);
150-
151-
var customRequired = function (value, element) {
152-
153-
// Handle single and multiple checkboxes/radio buttons.
154-
if (element.type.toLowerCase() === "checkbox" || element.type.toLowerCase() === "radio") {
155-
const allElementsOfThisName = element.form.querySelectorAll("input[name='" + element.name + "']");
156-
for (let i = 0; i < allElementsOfThisName.length; i++) {
157-
if (allElementsOfThisName[i].checked === true) {
158-
return true;
159-
}
160-
}
161-
162-
return false;
163-
}
164-
165-
// Use default required for all other field types.
166-
return Boolean(value);
167-
}
168-
169-
service.addProvider("required", customRequired);
170-
171150
service.bootstrap();
172151
</script>
173152
</body>

dist/aspnet-validation.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,19 @@ var MvcValidationProviders = /** @class */ (function () {
190190
* Validates whether the input has a value.
191191
*/
192192
this.required = function (value, element, params) {
193+
// Handle single and multiple checkboxes/radio buttons.
194+
var elementType = element.type.toLowerCase();
195+
if (elementType === "checkbox" || elementType) {
196+
var allElementsOfThisName = Array.from(element.form.querySelectorAll("input[name='".concat(element.name, "'][type='").concat(elementType, "']")));
197+
for (var _i = 0, allElementsOfThisName_1 = allElementsOfThisName; _i < allElementsOfThisName_1.length; _i++) {
198+
var element_1 = allElementsOfThisName_1[_i];
199+
if (element_1 instanceof HTMLInputElement && element_1.checked === true) {
200+
return true;
201+
}
202+
}
203+
return false;
204+
}
205+
// Default behavior otherwise.
193206
return Boolean(value);
194207
};
195208
/**

dist/aspnet-validation.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/aspnet-validation.min.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "aspnet-client-validation",
3-
"version": "0.8.7",
3+
"version": "0.8.8",
44
"description": "Enables ASP.NET MVC client-side validation, without jQuery!",
55
"main": "dist/aspnet-validation.js",
66
"style": "dist/aspnet-validation.css",

src/index.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,19 @@ export class MvcValidationProviders {
100100
* Validates whether the input has a value.
101101
*/
102102
required: ValidationProvider = (value, element, params) => {
103+
// Handle single and multiple checkboxes/radio buttons.
104+
const elementType = element.type.toLowerCase();
105+
if (elementType === "checkbox" || elementType) {
106+
const allElementsOfThisName = Array.from(element.form.querySelectorAll(`input[name='${element.name}'][type='${elementType}']`));
107+
for (let element of allElementsOfThisName) {
108+
if (element instanceof HTMLInputElement && element.checked === true) {
109+
return true;
110+
}
111+
}
112+
113+
return false;
114+
}
115+
// Default behavior otherwise.
103116
return Boolean(value);
104117
}
105118

0 commit comments

Comments
 (0)