From 7a0899ddb10f71b5900d7d328c1289c9fc993229 Mon Sep 17 00:00:00 2001
From: Rafael Ostertag <rafael.ostertag@math.uzh.ch>
Date: Tue, 3 May 2016 12:10:59 +0200
Subject: [PATCH] FormGroup.js: Ignore intermediate <input type="hidden">
 controls when seeking form group.

---
 javascript/src/Element/FormGroup.js          | 2 +-
 javascript/src/Element/NameSpaceFunctions.js | 2 +-
 mockup/elementconfiguration.html             | 3 +++
 3 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/javascript/src/Element/FormGroup.js b/javascript/src/Element/FormGroup.js
index ab840878a..94ad237fb 100644
--- a/javascript/src/Element/FormGroup.js
+++ b/javascript/src/Element/FormGroup.js
@@ -25,7 +25,7 @@ QfqNS.Element = QfqNS.Element || {};
         }
 
         this.$formGroup = this.$findFormGroup($enclosedElement);
-        this.$element = this.$formGroup.find('input, select');
+        this.$element = this.$formGroup.find('input:not([type="hidden"]), select');
         this.$label = this.$formGroup.find('.control-label');
         this.$helpBlock = this.$formGroup.find(".help-block");
     };
diff --git a/javascript/src/Element/NameSpaceFunctions.js b/javascript/src/Element/NameSpaceFunctions.js
index c6f034383..fcbd7085c 100644
--- a/javascript/src/Element/NameSpaceFunctions.js
+++ b/javascript/src/Element/NameSpaceFunctions.js
@@ -11,7 +11,7 @@ QfqNS.Element = QfqNS.Element || {};
     'use strict';
 
     n.getElement = function (name) {
-        var $element = $('[name="' + name + '"]');
+        var $element = $('[name="' + name + '"]:not([type="hidden"])');
         if ($element.length === 0) {
             throw Error('No element with name "' + name + '" found.');
         }
diff --git a/mockup/elementconfiguration.html b/mockup/elementconfiguration.html
index c7ef286cf..bf357b1d4 100644
--- a/mockup/elementconfiguration.html
+++ b/mockup/elementconfiguration.html
@@ -98,6 +98,7 @@
             <div class="col-md-2">
                 <label for="select" class="control-label">Select (name: select)</label>
             </div>
+            <input type="hidden" name="select">
             <div class="col-md-6">
                 <select id="select" class="form-control" name="select">
                     <option>a</option>
@@ -120,6 +121,7 @@
                         <input type="radio" name="radio" value="a">a
                     </label>
                 </div>
+                <input type="hidden" name="radio">
                 <div class="radio">
                     <label>
                         <input type="radio" name="radio" value="b">b
@@ -139,6 +141,7 @@
             </div>
 
             <div class="col-md-6">
+                <input type="hidden" name="checkbox">
                 <div class="checkbox">
                     <label>
                         <input type="checkbox" id="checkbox" name="checkbox" data-hidden="no">
-- 
GitLab