Edit in JSFiddle

function upInputFn(value) {
  value = value.toString().toLocaleUpperCase();

  return value;
}

function upFirstInputFn(value) {
  var splitted = value.split(' ');

  if (splitted[0].length) {
    value = splitted[0][0].toLocaleUpperCase() + splitted[0].substr(1, splitted[0].length);

    if (splitted.length !== 1) {
      value += ' ';
    }

    if (splitted[1]) {
      value += splitted[1][0].toLocaleUpperCase() + splitted[1].substr(1, splitted[1].length);
    }
  }

  return value;
}

function phoneInputFn(value) {
  value = parseInt(value.replace(/\-/g, ''));

  if (isNaN(value)) {
    value = '';
  } else {
    value = String(value);
  }

  switch (value.length) {
    case 0:
    case 1:
    case 2:
      break;
    case 4:
    case 5:
    case 6:
      value = value.replace(/^(\d{3})/, "$1-");
      break;
    case 7:
    case 8:
    case 9:
      value = value.replace(/^(\d{3})(\d{3})/, "$1-$2-");
      break;
    case 10:
      value = value.replace(/(\d{3})(\d{3})(\d{4})/, "$1-$2-$3");
      break;
    default:
      value = value.substr(0, 10);
      value = value.replace(/(\d{3})(\d{3})(\d{4})/, "$1-$2-$3");
  }

  return value;
}

function phoneBracketsInputFn(value) {
  value = parseInt(value.replace(/\-/g, '').replace(/\(/g, '').replace(/\)/g, ''));

  if (isNaN(value)) {
    value = '';
  } else {
    value = String(value);
  }

  switch (value.length) {
    case 0:
      break;
    case 1:
    case 2:
      value = '(' + value;
      break;
    case 3:
      value = '(' + value;
      break;
    case 4:
    case 5:
    case 6:
      value = value.replace(/^(\d{3})/, "($1)-");
      break;
    case 7:
    case 8:
    case 9:
      value = value.replace(/^(\d{3})(\d{3})/, "($1)-$2-");
      break;
    case 10:
      value = value.replace(/(\d{3})(\d{3})(\d{4})/, "($1)-$2-$3");
      break;
    default:
      value = value.substr(0, 10);
      value = value.replace(/(\d{3})(\d{3})(\d{4})/, "($1)-$2-$3");
  }

  return value;
}

function dateInputFn(value) {
  var splitted = value.split('.');

  switch (splitted.length) {
    case 1:
      if (splitted[0].length > 2) {
        splitted[1] = splitted[0].substr(2, 1);
        splitted[0] = splitted[0].substr(0, 2);
      }
      break;
    case 2:
      if (splitted[1].length > 2) {
        splitted[2] = splitted[1].substr(2, 4);
        splitted[1] = splitted[1].substr(0, 2);
      }
      break;
    case 3:
      if (splitted[2].length > 4) {
        splitted[2] = splitted[2].substr(0, 4);
      }
  }

  value = splitted[0];

  if (splitted[1]) {
    value += '.' + splitted[1];

    if (splitted[2]) {
      if (splitted[1].length === 1) {
        splitted[1] = '0' + splitted[1];
      }

      value += '.' + splitted[2];
    }
  }

  return value;
}

function salaryInputFn(value) {
  value = value.toString().replace('$', '').replace(/\,/g, '').replace('-', '').replace('.', '');

  if (value.length === 0) {
    value = '';
  } else if (value.length > 6) {
    value = value.substr(0, 6);
    value = '$' + value.replace(/\B(?=(\d{3})+(?!\d))/g, ',');
  } else {
    value = '$' + value.replace(/\B(?=(\d{3})+(?!\d))/g, ',');
  }

  return value;
}

function zipInputFn(value) {
  value = value.toString().substr(0, 6);

  return value;
}

document.addEventListener("DOMContentLoaded", function() {

  new FancyForm({
    renderTo: 'container',
    title: 'Format input',
    width: 300,
    height: 400,
    labelWidth: 80,
    defaults: {
      type: 'string'
    },
    items: [{
      label: 'Name',
      emptyText: 'UPPERCASE',
      format: {
        inputFn: upInputFn
      },
      name: 'name'
    }, {
      label: 'Full Name',
      emptyText: 'Name Surname',
      format: {
        inputFn: upFirstInputFn
      },
      name: 'name'
    }, {
      type: 'date',
      label: 'Birthday',
      name: 'birthday',
      emptyText: 'm.d.Y',
      format: {
        read: 'm.d.Y',
        write: 'm.d.Y',
        edit: 'm.d.Y',
        inputFn: dateInputFn
      }
    }, {
      type: 'number',
      label: 'Salary',
      name: 'salary',
      emptyText: '$80,000',
      format: {
        inputFn: salaryInputFn
      }
    }, {
      label: 'Phone',
      name: 'phone',
      emptyText: 'xxx-xxx-xxxx',
      format: {
        inputFn: phoneInputFn
      }
    }, {
      label: 'Phone2',
      name: 'phone2',
      emptyText: '(xxx)-xxx-xxxx',
      format: {
        inputFn: phoneBracketsInputFn
      }
    }, {
      label: 'Zip Code',
      name: 'zip',
      emptyText: 'xxxxxx',
      format: {
        inputFn: zipInputFn
      }
    }]
  });

});
<script src="https://cdn.fancygrid.com/fancy.min.js"></script>

<div id="container"></div>