Get/set data in form fields with consistent type coercion and validation


"fio" (form IO) is a set of utilities for getting/setting data in HTML input and select form fields more consistently type coercion and validation.

It follows these conventions:

  • Disabled fields are ignored when getting values, but will be set if a value exists for it
  • Only checkboxes and radio buttons that checked are returned
  • Selectors pointing to inputs will be treated as a multi-value fields and will return an array on get (as well as expect an array when set). This of course excludes radio buttons due to the constraint mentioned above.
  • Checkbox and radio buttons are set via their value
  • Values are coerced based on the data-type attribute if one is present and falls back to the type attribute
  • Empty values are coerced to null
<script src="require.js"></script>
<script>require(['fio'], function(fio) { ... })</script> 
<script src="jquery.js"></script>
<script src="fio.js"></script>

Gets the input value given the selector.

Sets the input value for the selector.

Coerces some value for the given type. This is generally performed after getInputValue is used.

Validates a value is of the given type. Returns a boolean denoting the result.

<input type=checkbox name=cbox1 value=foo checked>
<input type=checkbox name=cbox1 value=bar>
<input type=checkbox name=cbox1 value=baz checked>
fio.get('[name=cbox1]'); // ['foo', 'baz'] 
<input name=range1 value=1>
<input name=range1 value=2>
fio.get('[name=range1]'); // [1, 2] 
<input name=range2 value=1>
<input name=range2 value=2 disabled>
fio.get('[name=range2]'); // 1