DevExtreme v23.1 is now available.

Explore our newest features/capabilities and share your thoughts with us.

Your search did not match any results.
Forms and Multi-Purpose


DevExtreme JavaScript Form is an adaptive UI component that represents data as a collection of label-editor pairs. Form is available for AngularJS and thus supports two-way binding to scope properties and declarative configuration. This example shows a slightly customized Form with editors arranged into groups. DevExtreme also provides other controls, like Filter Builder, Range Selector, Radio Group, which are more specialized. View demos in this section to learn their application.

Backend API
Copy to CodePen
const DemoApp = angular.module('DemoApp', ['dx']); DemoApp.controller('DemoController', ($scope) => { $scope.formOptions = { formData: employee, items: [{ itemType: 'group', cssClass: 'first-group', colCount: 4, items: [{ template: "<div class='form-avatar'></div>", }, { itemType: 'group', colSpan: 3, items: [{ dataField: 'FirstName', }, { dataField: 'LastName', }, { dataField: 'BirthDate', editorType: 'dxDateBox', editorOptions: { width: '100%', }, }], }], }, { itemType: 'group', cssClass: 'second-group', colCount: 2, items: [{ itemType: 'group', items: [{ dataField: 'Address', }, { dataField: 'City', }, { dataField: 'Position', editorType: 'dxSelectBox', editorOptions: { items: positions, value: '', }, }], }, { itemType: 'group', items: [{ dataField: 'State', editorType: 'dxSelectBox', editorOptions: { items: states, }, }, { dataField: 'ZipCode', }, { dataField: 'Mobile', label: { text: 'Phone', }, editorOptions: { mask: '+1 (000) 000-0000', }, }], }, { colSpan: 2, dataField: 'Notes', editorType: 'dxTextArea', editorOptions: { height: 140, }, }], }], }; });
<!DOCTYPE html> <html xmlns=""> <head> <title>DevExtreme Demo</title> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" /> <script src=""></script> <script>window.jQuery || document.write(decodeURIComponent('%3Cscript src="js/jquery.min.js"%3E%3C/script%3E'))</script> <link rel="stylesheet" type="text/css" href="" /> <script src=""></script> <script>window.angular || document.write(decodeURIComponent('%3Cscript src="js/angular.min.js"%3E%3C/script%3E'))</script> <script src=""></script> <script src="data.js"></script> <link rel="stylesheet" type="text/css" href="styles.css" /> <script src="index.js"></script> </head> <body class="dx-viewport"> <div class="demo-container" ng-app="DemoApp" ng-controller="DemoController"> <div dx-form="formOptions"></div> </div> </body> </html>
.first-group, .second-group { padding: 20px; } .second-group { background-color: rgba(191, 191, 191, 0.15); } .form-avatar { height: 128px; width: 128px; margin-right: 10px; border: 1px solid #d2d3d5; border-radius: 50%; background-image: url('../../../../images/petersmith.png'); background-size: contain; background-repeat: no-repeat; background-position: center; }
const employee = { ID: 1, FirstName: 'John', LastName: 'Heart', Position: 'CEO', BirthDate: '1964/03/16', HireDate: '1995/01/15', Notes: 'John has been in the Audio/Video industry since 1990. He has led DevAV as its CEO since 2003.\r\nWhen not working hard as the CEO, John loves to golf and bowl. He once bowled a perfect game of 300.', Address: '351 S Hill St.', City: 'Los Angeles', State: 'CA', ZipCode: '90013', Home: '555-684-1334', Mobile: '555-684-1335', Email: '', Skype: 'jheart_DX_skype', }; const positions = [ 'HR Manager', 'IT Manager', 'CEO', 'Controller', 'Sales Manager', 'Support Manager', 'Shipping Manager', ]; const states = ['AL', 'AK', 'AZ', 'AR', 'CA', 'CO', 'CT', 'DE', 'FL', 'GA', 'HI', 'ID', 'IL', 'IN', 'IA', 'KS', 'KY', 'LA', 'ME', 'MD', 'MA', 'MI', 'MN', 'MS', 'MO', 'MT', 'NE', 'NV', 'NH', 'NJ', 'NM', 'NY', 'NC', 'ND', 'OH', 'OK', 'OR', 'PA', 'RI', 'SC', 'SD', 'TN', 'TX', 'UT', 'VT', 'VA', 'WA', 'WV', 'WI', 'WY'];