@if (Model.StatusMessage != null) {
From 5ec330fd694e999ed46e3e4742b7a5d1b5538902 Mon Sep 17 00:00:00 2001
From: Phil Haack
Date: Tue, 2 Jan 2024 12:42:05 -0800
Subject: [PATCH 02/12] Do not validate disabled inputs
Fixes #90
---
src/index.ts | 13 +++++++++++--
1 file changed, 11 insertions(+), 2 deletions(-)
diff --git a/src/index.ts b/src/index.ts
index f7380ac..bedf15f 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -1244,8 +1244,8 @@ export class ValidationService {
*/
createValidator(input: ValidatableElement, directives: ValidationDirective) {
return async () => {
- // only validate visible fields
- if (!this.isHidden(input)) {
+ // only validate visible and enabled fields
+ if (!this.isHidden(input) && !this.isDisabled(input)) {
for (let key in directives) {
let directive = directives[key];
let provider = this.providers[key];
@@ -1296,6 +1296,15 @@ export class ValidationService {
return !(this.allowHiddenFields || input.offsetWidth || input.offsetHeight || input.getClientRects().length);
}
+ /**
+ * Checks if the provided input is disabled
+ * @param input
+ * @returns
+ */
+ private isDisabled(input: HTMLElement) {
+ return input.getAttribute('disabled') !== null;
+ }
+
/**
* Adds addClass and removes removeClass
* @param element Element to modify
From 6330d4e885798368b1f79a5d6e991403d67b49e7 Mon Sep 17 00:00:00 2001
From: Phil Haack
Date: Fri, 5 Jan 2024 13:42:16 -0800
Subject: [PATCH 03/12] Use ValidatableElement instead of HTMLElement
Co-authored-by: Keith Dahlby
---
src/index.ts | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/index.ts b/src/index.ts
index bedf15f..5feb17a 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -1301,8 +1301,8 @@ export class ValidationService {
* @param input
* @returns
*/
- private isDisabled(input: HTMLElement) {
- return input.getAttribute('disabled') !== null;
+ private isDisabled(input: ValidatableElement) {
+ return input.disabled;
}
/**
From 4cfd9b39be4e521f4c684ecabf26496647543cbd Mon Sep 17 00:00:00 2001
From: Phil Haack
Date: Fri, 5 Jan 2024 13:57:15 -0800
Subject: [PATCH 04/12] Do not track disabled inputs
---
src/index.ts | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/src/index.ts b/src/index.ts
index 5feb17a..d0d3eab 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -1013,6 +1013,10 @@ export class ValidationService {
* @param input
*/
addInput(input: ValidatableElement) {
+ if (input.disabled) {
+ return;
+ }
+
let uid = this.getElementUID(input);
let directives = this.parseDirectives(input.attributes);
From 32a01bcb9cd4db3c3d4d59076af1afa4f41fa8d6 Mon Sep 17 00:00:00 2001
From: Phil Haack
Date: Fri, 5 Jan 2024 15:05:02 -0800
Subject: [PATCH 05/12] Update Disabled Inputs demo to scan for changes
---
Pages/Demos/Checkboxes.cshtml | 6 +++
Pages/Demos/DisabledInputs.cshtml | 30 +++++++++--
Pages/Demos/DisabledInputs.cshtml.cs | 2 +-
Pages/Demos/FormAction.cshtml | 9 +++-
Pages/Demos/RemovedInputs.cshtml | 61 +++++++++++----------
Pages/Demos/SelectInput.cshtml | 9 +++-
Pages/Demos/SubmitButton.cshtml | 79 +++++++++++++++-------------
Pages/Shared/_Layout.cshtml | 4 --
8 files changed, 127 insertions(+), 73 deletions(-)
diff --git a/Pages/Demos/Checkboxes.cshtml b/Pages/Demos/Checkboxes.cshtml
index c1a6df1..c0ed782 100644
--- a/Pages/Demos/Checkboxes.cshtml
+++ b/Pages/Demos/Checkboxes.cshtml
@@ -124,3 +124,9 @@
Reset
}
+@section Scripts {
+
+}
\ No newline at end of file
diff --git a/Pages/Demos/DisabledInputs.cshtml b/Pages/Demos/DisabledInputs.cshtml
index be1bcee..769247d 100644
--- a/Pages/Demos/DisabledInputs.cshtml
+++ b/Pages/Demos/DisabledInputs.cshtml
@@ -17,15 +17,17 @@
-
- Value 2 (not disabled)
+ Value 2 ()
+
@@ -77,4 +79,26 @@
-
+@section Scripts {
+
+}
\ No newline at end of file
diff --git a/Pages/Demos/DisabledInputs.cshtml.cs b/Pages/Demos/DisabledInputs.cshtml.cs
index af60ec3..c5304e2 100644
--- a/Pages/Demos/DisabledInputs.cshtml.cs
+++ b/Pages/Demos/DisabledInputs.cshtml.cs
@@ -27,7 +27,7 @@ public class DisabledInputs : PageModel
public IActionResult OnPost()
{
- StatusMessage = "Form was submitted. Any validation errors are due to server side validation";
+ StatusMessage = "Form was submitted to server. Any validation errors that may be present are due to server side validation, not client.";
return RedirectToPage();
}
diff --git a/Pages/Demos/FormAction.cshtml b/Pages/Demos/FormAction.cshtml
index 98846df..a411b24 100644
--- a/Pages/Demos/FormAction.cshtml
+++ b/Pages/Demos/FormAction.cshtml
@@ -17,4 +17,11 @@
-
\ No newline at end of file
+
+
+@section Scripts {
+
+}
diff --git a/Pages/Demos/RemovedInputs.cshtml b/Pages/Demos/RemovedInputs.cshtml
index 70d5a75..ad48e3c 100644
--- a/Pages/Demos/RemovedInputs.cshtml
+++ b/Pages/Demos/RemovedInputs.cshtml
@@ -8,31 +8,38 @@
\ No newline at end of file
+
+
+@section Scripts {
+
+}
\ No newline at end of file
diff --git a/Pages/Demos/SubmitButton.cshtml b/Pages/Demos/SubmitButton.cshtml
index bf5b6fa..ce4956e 100644
--- a/Pages/Demos/SubmitButton.cshtml
+++ b/Pages/Demos/SubmitButton.cshtml
@@ -6,39 +6,46 @@
}
\ No newline at end of file
+
+
+
+
+
+ This simple test demonstrates that we ensure that submit buttons.
+
+
+
+
+
+
+
+
+
+
+ @if (Model.SubmitButtonValue is not null) {
+
+ The submitted button value is "@Model.SubmitButtonValue".
+
+
+
The submitted form collection:
+
+ @foreach (var item in Request.Form) {
+
+
@item.Key
+
@item.Value
+
+ }
+
+ }
+
+
+
+
+
+
+@section Scripts {
+
+}
\ No newline at end of file
diff --git a/Pages/Shared/_Layout.cshtml b/Pages/Shared/_Layout.cshtml
index b3abb18..6236ab6 100644
--- a/Pages/Shared/_Layout.cshtml
+++ b/Pages/Shared/_Layout.cshtml
@@ -10,10 +10,6 @@
@RenderBody()
-
@RenderSection("scripts", required: false)