- commit
- 8d6419ff97803e99c18efd4bd9581b0051544983
- parent
- f07e992959844b74872592fb32e8a7e11d134be3
- Author
- Tobias Bengfort <tobias.bengfort@gmx.net>
- Date
- 2015-08-30 19:53
getModel: return number for number input
Diffstat
| M | src/muu-directive.js | 10 | ++++++---- |
| M | test/test-directive.js | 9 | +++++++-- |
2 files changed, 13 insertions, 6 deletions
diff --git a/src/muu-directive.js b/src/muu-directive.js
@@ -146,9 +146,11 @@ define('muu-directive', ['muu-dom-helpers', 'muu-js-helpers', 'muu-update-dom'],
146 146 var element = self.querySelector('[name=' + name + ']');
147 147 if (element === undefined) {
148 148 return _default;
149 -1 } else if (element.type === 'checkbox') {
-1 149 } else if (element.getAttribute('type') === 'number') {
-1 150 return parseFloat(element.value, 10);
-1 151 } else if (element.getAttribute('type') === 'checkbox') {
150 152 return element.checked;
151 -1 } else if (element.type === 'radio') {
-1 153 } else if (element.getAttribute('type') === 'radio') {
152 154 var options = self.querySelectorAll('[name=' + name + ']');
153 155 return $.getRadio(options) || _default;
154 156 } else {
@@ -168,9 +170,9 @@ define('muu-directive', ['muu-dom-helpers', 'muu-js-helpers', 'muu-update-dom'],
168 170 */
169 171 this.setModel = function(name, value) {
170 172 var element = self.querySelector('[name=' + name + ']');
171 -1 if (element.type === 'checkbox') {
-1 173 if (element.getAttribute('type') === 'checkbox') {
172 174 element.checked = value;
173 -1 } else if (element.type === 'radio') {
-1 175 } else if (element.getAttribute('type') === 'radio') {
174 176 var options = self.querySelectorAll('[name=' + name + ']');
175 177 $.setRadio(options, value);
176 178 } else {
diff --git a/test/test-directive.js b/test/test-directive.js
@@ -133,6 +133,7 @@ define(['muu-directive', 'muu-js-helpers', 'muu-dom-helpers'], function(Directiv 133 133 template += '<input name="test-empty" />'; 134 134 template += '<input name="yes" type="checkbox" checked="checked" /><input name="no" type="checkbox" />'; 135 135 template += '<input name="test-radio" type="radio" checked="checked" value="foo" /><input name="test-radio" type="radio" value="bar" />'; -1 136 template += '<input name="test-number" type="number" value="1.5" />'; 136 137 directive = new Directive(element, template, registry); 137 138 directive.update({}); 138 139 }); @@ -151,16 +152,20 @@ define(['muu-directive', 'muu-js-helpers', 'muu-dom-helpers'], function(Directiv 151 152 expect(directive.getModel('yes')).to.be(true); 152 153 expect(directive.getModel('no')).to.be(false); 153 154 });154 -1 it('returns the selected value radioboxes', function() {-1 155 it('returns the selected value for radioboxes', function() { 155 156 expect(directive.getModel('test-radio')).to.equal('foo'); 156 157 }); -1 158 it('returns the selected value as number for number input', function() { -1 159 expect(directive.getModel('test-number')).to.equal(1.5); -1 160 }); 157 161 it('returns all formdata as a flat object if no name is specified', function() { 158 162 expect(directive.getModel()).to.eql({ 159 163 test: 'foobar', 160 164 'test-empty': '', 161 165 yes: true, 162 166 no: false,163 -1 'test-radio': 'foo'-1 167 'test-radio': 'foo', -1 168 'test-number': 1.5 164 169 }); 165 170 }); 166 171 });