{{ _("Become a part of our community by registering an account!") }}
</p>
- <form action="" method="POST">
+ <form id="form-register" action="" method="POST">
{% raw xsrf_form_html() %}
<input type="hidden" name="next" value="{{ next or "" }}">
</div>
</div>
- <button type="submit" class="btn btn-primary btn-block">
+ <button type="submit" class="btn btn-primary btn-block" disabled>
{{ _("Register") }}
</button>
</form>
{% block javascript %}
<script>
+ var form = $("#form-register");
+ var submit = form.find(":submit");
+
+ // Store the valid status
+ var valid = {
+ uid: false,
+ email: false,
+ };
+
var check_uid;
var check_email;
- $("input[name=uid]").on("keyup", function(e) {
+ form.find("input[name=uid]").on("keyup", function(e) {
if (check_uid)
clearTimeout(check_uid);
function(data) {
// Reset all classes
uid.removeClass("is-valid is-invalid");
+ valid.uid = false;
// Hide all feedback
uid.siblings(".invalid-feedback").hide();
switch (data.result) {
case "ok":
uid.addClass("is-valid");
+ valid.uid = true;
break;
case "invalid":
$("#uid-taken").show();
break;
}
+
+ form.trigger("change");
}
);
}, 250);
});
- $("input[name=email]").on("keyup", function(e) {
+ form.find("input[name=email]").on("keyup", function(e) {
if (check_email)
clearTimeout(check_email);
function(data) {
// Reset all classes
email.removeClass("is-valid is-invalid");
+ valid.email = false;
// Hide all feedback
email.siblings(".invalid-feedback").hide();
switch (data.result) {
case "ok":
email.addClass("is-valid");
+ valid.email = true;
break;
case "invalid":
$("#email-taken").show();
break;
}
+
+ form.trigger("change");
}
);
}, 250);
});
+
+ form.on("change", function() {
+ var disabled = false;
+
+ $.each(valid, function(field, status) {
+ if (!status) {
+ disabled = true;
+ return false;
+ }
+ });
+
+ submit.prop("disabled", disabled);
+ });
</script>
{% end block %}