From 9bfb5e10dec24c9e0d81cb996ee743d93a50e6c0 2014-12-02 16:31:43
From: Bradley M. Kuhn
Date: 2014-12-02 16:31:43
Subject: [PATCH] Rework form with error messages & basic validation
Since PayPal cannot seem to be cajoled into verifying a minimum amount,
we have to do it here with Javascript. This isn't perfect validation:
the form can currently still be submitted with an amount less than $120,
but at least this way Javascript-enabled browsers might prevent some
folks from doing that.
---
diff --git a/www/conservancy/static/forms.css b/www/conservancy/static/forms.css
new file mode 100644
index 0000000000000000000000000000000000000000..130d536a0623ad0e73585203551ec63eab3db1e6
--- /dev/null
+++ b/www/conservancy/static/forms.css
@@ -0,0 +1,32 @@
+#supporter-form label {
+ display: inline-block;
+ width: 200px;
+ text-align: right;
+}
+
+#supporter-form-submit {
+ padding-left: 100px;
+}
+
+#supporter-form div {
+ margin-top: 1em;
+}
+
+.form-error {
+ display: none;
+ margin-left: 10px;
+ color: green;
+}
+
+.form-error-show {
+ color: red;
+ margin-left: 10px;
+}
+
+input.invalid, textarea.invalid {
+ border: 2px solid red;
+}
+
+input.valid, textarea.valid {
+ border: 2px solid green;
+}
diff --git a/www/conservancy/static/supporter-page.js b/www/conservancy/static/supporter-page.js
index 6741e7b557b4a6d18344abfb85a30cfa67c7cef4..f18a8306ff957b623827aa9681f60298c0fb22cf 100644
--- a/www/conservancy/static/supporter-page.js
+++ b/www/conservancy/static/supporter-page.js
@@ -32,4 +32,21 @@ $(document).ready(function() {
$control.find('.toggle-content').slideUp("slow");
$control.find('.toggle-content').slideDown("slow");
});
+ $('#amount').on('input', function() {
+ var input=$(this);
+ var value = input.val();
+ var errorElement=$("span", input.parent());
+
+ var re = /^[0-9\.]+$/;
+ var isValid = (re.test(value) && parseInt(value) >= 120);
+ if (isValid) {
+ input.removeClass("invalid").addClass("valid");
+ errorElement.removeClass("form-error-show").addClass("form-error");
+ }
+ else {
+ input.removeClass("valid").addClass("invalid");
+ errorElement.removeClass("form-error").addClass("form-error-show");
+ }
+ });
+
});
diff --git a/www/conservancy/static/supporter/index.html b/www/conservancy/static/supporter/index.html
index 7e3a5351d9ef0317b5efb104759f2d1b9cf3ffba..6d325c99692f98b684d2b80f40bdde43666e7755 100644
--- a/www/conservancy/static/supporter/index.html
+++ b/www/conservancy/static/supporter/index.html
@@ -4,6 +4,7 @@
{% block head %}
+
@@ -123,17 +124,19 @@ internal policies are published and available for scrutiny.