From 19c874706e4510220dd2cd376dcc4c13877b79e3 Mon Sep 17 00:00:00 2001 From: Rafael Ostertag <rafael.ostertag@math.uzh.ch> Date: Tue, 10 May 2016 15:02:37 +0200 Subject: [PATCH] Implemented https://project/issues/1929 --- javascript/src/Form.js | 21 +++++++++++++++++++++ javascript/src/QfqForm.js | 9 +++++++++ 2 files changed, 30 insertions(+) diff --git a/javascript/src/Form.js b/javascript/src/Form.js index 67651ae28..16bc10b17 100644 --- a/javascript/src/Form.js +++ b/javascript/src/Form.js @@ -109,4 +109,25 @@ var QfqNS = QfqNS || {}; return document.forms[this.formId].checkValidity(); }; + /** + * @public + */ + n.Form.prototype.getFirstNonValidElement = function () { + var index; + var elementNumber = document.forms[this.formId].length; + + for (index = 0; index < elementNumber; index++) { + var element = document.forms[this.formId][index]; + if (!element.willValidate) { + continue; + } + + if (!element.checkValidity()) { + return element; + } + } + + return null; + }; + })(QfqNS); diff --git a/javascript/src/QfqForm.js b/javascript/src/QfqForm.js index 975f4eef6..96ea6e862 100644 --- a/javascript/src/QfqForm.js +++ b/javascript/src/QfqForm.js @@ -309,6 +309,15 @@ var QfqNS = QfqNS || {}; if (this.form.validate() !== true) { this.form.$form.validator('validate'); + + var element = this.form.getFirstNonValidElement(); + if (element.hasAttribute('name')) { + var tabId = this.bsTabs.getContainingTabIdForFormControl(element.getAttribute('name')); + if (tabId) { + this.bsTabs.activateTab(tabId); + } + } + var alert = new n.Alert("Form is incomplete.", "warning"); alert.show(); return; -- GitLab