document.addEventListener("DOMContentLoaded", function() { 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 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; } new FancyForm({ renderTo: 'container', title: 'User Data', width: 330, height: 750, labelWidth: 80, defaults: { type: 'string' }, items: [{ name: 'id', type: 'hidden' }, { label: 'Name', emptyText: 'Name', name: 'name' }, { label: 'SurName', emptyText: 'SurName', name: 'surname' }, { label: 'E-mail', emptyText: 'E-mail', name: 'email', vtype: 'email' }, { type: 'date', label: 'Birthday', name: 'birthday' }, { label: 'Phone', name: 'phone', emptyText: 'xxx-xxx-xxxx', format: { inputFn: phoneInputFn } }, { type: 'checkbox', label: 'Married', name: 'married', value: true }, { type: 'switcher', label: 'Active', name: 'active', value: true }, { type: 'number', label: 'Childs', name: 'childs', min: 0, value: 2 }, { type: 'number', label: 'Salary', name: 'salary', emptyText: '$80,000', spin: true, step: 1000, min: 20000, max: 150000, value: 75000, format: { inputFn: salaryInputFn } }, { type: 'string', label: 'Position', name: 'position' }, { type: 'textarea', label: 'About', name: 'about' }, { type: 'combo', label: 'Country', name: 'country', data: [{ index: 0, country: 'USA' }, { index: 1, country: 'Canada' }], displayKey: 'country', valueKey: 'index', value: 0, events: [{ change: function(field, value) { console.log(arguments); } }] }, { type: 'radio', label: 'Car brand', name: 'brand', value: 'none', items: [{ text: 'None', value: 'none' }, { text: 'KIA', value: 'kia' }, { text: 'Honda', value: 'honda' }, { text: 'Land Rover', value: 'lr' }, { text: 'Toyota', value: 'toyota' }, { text: 'BMW', value: 'bmw' }] }, { label: 'Military', type: 'segbutton', items: [{ text: 'Yes' }, { text: 'No', pressed: true }] }, { label: 'Education', type: 'segbutton', multiToggle: true, items: [{ text: 'Bachelor' }, { text: 'Master', pressed: true }, { text: 'PhD', pressed: true }, { text: 'Doctor' }] }], buttons: ['side', { text: 'Clear', handler: function() { this.clear(); } }, { text: 'Save', handler: function() { } }] }); });
<script src="https://cdn.fancygrid.com/fancy.min.js"></script> <div id="container"></div>