diff --git a/src/pretix/static/pretixpresale/js/ui/main.js b/src/pretix/static/pretixpresale/js/ui/main.js
index 34a85db5bf..b1fe04f218 100644
--- a/src/pretix/static/pretixpresale/js/ui/main.js
+++ b/src/pretix/static/pretixpresale/js/ui/main.js
@@ -191,6 +191,7 @@ function setup_basics(el) {
else $(":input", this).get(0).focus();
});
el.find(".alert-danger").first().each(function() {
+ var container = this;
var content = $("
").click(function(e) {
var input = $(e.target.hash).get(0);
if (input) input.focus();
@@ -199,13 +200,14 @@ function setup_basics(el) {
});
$(".has-error").each(function() {
var target = target = $(":input", this);
- if (!target || !target.attr("aria-describedby")) return;
- var desc = $("#" + target.attr("aria-describedby").split(' ', 1)[0]);
+ var desc = target && target.attr("aria-describedby") ? document.getElementById(target.attr("aria-describedby").split(' ', 1)[0]) : null;
+ if (!target || !desc || desc == container) return;
+
// multi-input fields have a role=group with aria-labelledby
var label = this.hasAttribute("aria-labelledby") ? $("#" + this.getAttribute("aria-labelledby")) : $("[for="+target.attr("id")+"]");
var $li = $("");
- $li.text(": " + desc.text())
+ $li.text(": " + desc.textContent)
$li.prepend($("").attr("href", "#" + target.attr("id")).text(label.get(0).childNodes[0].nodeValue))
content.append($li);
});