muu

DEPRECATED lightweight JS framework
git clone https://git.ce9e.org/muu.git

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         });