diff --git a/routers/web/repo/actions/manual.go b/routers/web/repo/actions/manual.go
index 86a6014761..949469fa21 100644
--- a/routers/web/repo/actions/manual.go
+++ b/routers/web/repo/actions/manual.go
@@ -1,5 +1,5 @@
-// Copyright The Forgejo Authors.
-// SPDX-License-Identifier: MIT
+// Copyright 2024 The Forgejo Authors.
+// SPDX-License-Identifier: GPL-3.0-or-later
 
 package actions
 
@@ -43,7 +43,7 @@ func ManualRunWorkflow(ctx *context_module.Context) {
 
 	formKeyGetter := func(key string) string {
 		formKey := "inputs[" + key + "]"
-		return ctx.FormString(formKey)
+		return ctx.Req.PostFormValue(formKey)
 	}
 
 	if err := workflow.Dispatch(ctx, formKeyGetter, ctx.Repo.Repository, ctx.Doer); err != nil {
diff --git a/templates/repo/actions/dispatch.tmpl b/templates/repo/actions/dispatch.tmpl
index 2372e61ebb..48c2aa5a26 100644
--- a/templates/repo/actions/dispatch.tmpl
+++ b/templates/repo/actions/dispatch.tmpl
@@ -33,7 +33,9 @@
 							{{if eq $val.Type "boolean"}}
 								<div class="ui checkbox">
 									<label><strong>{{if $val.Description}}{{$val.Description}}{{else}}{{$key}}{{end}}</strong></label>
-									<input {{if $val.Required}}required{{end}} type="checkbox" name="inputs[{{$key}}]" {{if eq $val.Default "true"}}checked{{end}}>
+									{{/* These two inputs need to stay in exactly this order (checkbox first, hidden second) or boolean fields wont work correctly! */}}
+									<input type="checkbox" name="inputs[{{$key}}]" value="on" {{if eq $val.Default "true"}}checked{{end}}>
+									<input type="hidden" name="inputs[{{$key}}]" value="off" autocomplete="off">
 								</div>
 							{{else}}
 								<label>{{if $val.Description}}{{$val.Description}}{{else}}{{$key}}{{end}}</label>