Editor 3.0.0
DataTables CDN files for Editor 3.0.0. This software was originally released on 22nd July, 2026.
Release notes
This major release of Editor brings compatibility with DataTables 3, and matches the core library in that it no longer has any dependency on jQuery. Its only dependency now is DataTables core.
Moveover, Editor is now available on the DataTables CDN and the public NPM repository!
Editor is now part of the DataTables Plus suite of extensions and requires a license key to use. If you have an existing Editor license, your license key is available on your DataTables account page.
Further details on updating to Editor 3 are available in this upgrades notes document, which also highlights the major new features.
The release notes below document the specific changes.
Core
New
- Editor is part of the DataTables Plus suite of extensions
staticdisplay controller which can be used to display the Editor form in a pre-defined element. This is primarily designed for use with a form that is always visible (i.e. standalone page editing).dataSrcoption which can be used to tell Editor where to get the data to edit from. Specifically in addition to the HTML and DataTable sources that it could proviously do, this option can now be explicity set toajaxto have the form read remote data without needing a source DataTable.ajax.replacementswill now apply to the Ajax calls made byuploadanduploadMany.onoption which can be used to assign event handlers during initialisation. This matches DataTables' ownonoption.templatecan now be given atemplateas the element to use as the template. In this case the contents are cloned and used as the form template. If any other element type is used, the original method of detaching the element and using it directly is still used.- Support for HTML5 validation attributes. Use the
attrparameter for fields to set the validation conditions and the newfields.errorTextoption to set the error message. The error state is only triggered when the form is submitted. Server-side validation is uneffected. - The
ajaxoption forautocompleteandtagscan now be given as an object to provide fine-grained control over the Ajax request.
Updated
- Fields which are in an error state now have a box-shadow to highlight them (DataTables default styling).
displaycan now be given as a CSS selector string, which will result instaticbeing used with the given selector used to pick the element that the form will be displayed in. This is just an easy shorthand forstatic.- Editor buttons (when using DataTables styling) updated to match the styling of DataTables' and Button's styling in v3.
fields()undeprecated. It is tiny and can still be useful. No intention to remove it, so will keep it in place.- ES6 output target from TypeScript
Fixes
ajax.replacementscan now have a value set tofalse, and as a special case,idif specified will cause the default_id_/{id}replacement not to happen (i.e. you can now specify your own replacement, or cancel the default action).- It was possible for a
closeevent to be triggered after an instance was destroyed. No longer. - Only attempt to replace
_id_if id has a value. - Text input alignment should inherit for inline editing
- Upload button should have a cursor icon
- When
uploadManyis disabled, upload and remove buttons should be removed - When using nested editing with the styling frameworks (e.g. Bootstrap), the form title separator wasn't being displayed.
Docs
- Consistent naming for DataTables types
- Correct naming
- Updated for the more consistent naming convention used for DataTables' defined types in DT3
- Update event parameter naming to match API
- Update for non-jQuery events
Examples
- Update French translation examples to latest CDN data
- Add
staticdisplay controller example - New examples showing CardView being used with Editor
- Remove jQuery dependencies from examples
.NET
New
DataTableclass to enable reading of data from a database table without needing to use theEditorclass (which is the read / write equivalent).Editor.Fields()andDataTable.Columns()methods for adding multiple columns with an array (IEnumerablemore specifically)- Method for removing duplicate dictionaries based on all key/value pairs, and called this before returning the output when manual entries were added to the options list.
Updates
Editor.Field()with an array is now deprecated
Fixes
- Change the default data provider for SQLServer to be
Microsoft.Data.SqlClient, updated fromSystem.Data.SqlClient. - Deleting a row from a table which uses an alias for the table name would cause the row to not be deleted, and no errors or messages raised. It is now correctly deleted.
- Fixed label and value assignment for manual options
- SearchPanes support - empty data can mean null or empty string on the client-side. Previously the server-side used only null. Now both.
- Perform a null check before going to the database, and return an empty list if are null (and would generate an exception)
Removed
- Build for .NET Framework 4.5, 4.6 and 4.7. 4.8 is still supported
Node.js
New
DataTableclass to enable reading of data from a database table without needing to use theEditorclass (which is the read / write equivalent).- Full ESM support. This library is now built for both CJS and ESM environments, with Node automatically selected which build to use through the
exportsoption in package.json.
Updated
- Use native promise file system methods, rather than wrapping the sync ones.
Fixes
- Improved Typescript typing
- SearchPanes support - empty data can mean null or empty string on the client-side. Previously the server-side used only null. Now both.
PHP
New
DataTableclass to enable reading of data from a database table without needing to use theEditorclass (which is the read / write equivalent).
Fixes
- Only include the config.php file if it is present
- SearchPanes support - empty data can mean null or empty string on the client-side. Previously the server-side used only null. Now both.
Python
New Python port of the libraries for DataTables, providing full support for Editor.
Files
- //cdn.datatables.net/editor/3.0.0/js/dataTables.editor.js
- //cdn.datatables.net/editor/3.0.0/js/dataTables.editor.min.js
- //cdn.datatables.net/editor/3.0.0/js/dataTables.editor.min.mjs
- //cdn.datatables.net/editor/3.0.0/js/dataTables.editor.mjs
- //cdn.datatables.net/editor/3.0.0/js/editor.bootstrap.js
- //cdn.datatables.net/editor/3.0.0/js/editor.bootstrap.min.js
- //cdn.datatables.net/editor/3.0.0/js/editor.bootstrap.min.mjs
- //cdn.datatables.net/editor/3.0.0/js/editor.bootstrap.mjs
- //cdn.datatables.net/editor/3.0.0/js/editor.bootstrap4.js
- //cdn.datatables.net/editor/3.0.0/js/editor.bootstrap4.min.js
- //cdn.datatables.net/editor/3.0.0/js/editor.bootstrap4.min.mjs
- //cdn.datatables.net/editor/3.0.0/js/editor.bootstrap4.mjs
- //cdn.datatables.net/editor/3.0.0/js/editor.bootstrap5.js
- //cdn.datatables.net/editor/3.0.0/js/editor.bootstrap5.min.js
- //cdn.datatables.net/editor/3.0.0/js/editor.bootstrap5.min.mjs
- //cdn.datatables.net/editor/3.0.0/js/editor.bootstrap5.mjs
- //cdn.datatables.net/editor/3.0.0/js/editor.bulma.js
- //cdn.datatables.net/editor/3.0.0/js/editor.bulma.min.js
- //cdn.datatables.net/editor/3.0.0/js/editor.bulma.min.mjs
- //cdn.datatables.net/editor/3.0.0/js/editor.bulma.mjs
- //cdn.datatables.net/editor/3.0.0/js/editor.dataTables.js
- //cdn.datatables.net/editor/3.0.0/js/editor.dataTables.min.js
- //cdn.datatables.net/editor/3.0.0/js/editor.dataTables.min.mjs
- //cdn.datatables.net/editor/3.0.0/js/editor.dataTables.mjs
- //cdn.datatables.net/editor/3.0.0/js/editor.foundation.js
- //cdn.datatables.net/editor/3.0.0/js/editor.foundation.min.js
- //cdn.datatables.net/editor/3.0.0/js/editor.foundation.min.mjs
- //cdn.datatables.net/editor/3.0.0/js/editor.foundation.mjs
- //cdn.datatables.net/editor/3.0.0/js/editor.jqueryui.js
- //cdn.datatables.net/editor/3.0.0/js/editor.jqueryui.min.js
- //cdn.datatables.net/editor/3.0.0/js/editor.jqueryui.min.mjs
- //cdn.datatables.net/editor/3.0.0/js/editor.jqueryui.mjs
- //cdn.datatables.net/editor/3.0.0/js/editor.semanticui.js
- //cdn.datatables.net/editor/3.0.0/js/editor.semanticui.min.js
- //cdn.datatables.net/editor/3.0.0/js/editor.semanticui.min.mjs
- //cdn.datatables.net/editor/3.0.0/js/editor.semanticui.mjs
- //cdn.datatables.net/editor/3.0.0/importmap.json
- //cdn.datatables.net/editor/3.0.0/css/bubble.scss
- //cdn.datatables.net/editor/3.0.0/css/datatable.scss
- //cdn.datatables.net/editor/3.0.0/css/dropdown.scss
- //cdn.datatables.net/editor/3.0.0/css/editor.bootstrap.css
- //cdn.datatables.net/editor/3.0.0/css/editor.bootstrap.min.css
- //cdn.datatables.net/editor/3.0.0/css/editor.bootstrap4.css
- //cdn.datatables.net/editor/3.0.0/css/editor.bootstrap4.min.css
- //cdn.datatables.net/editor/3.0.0/css/editor.bootstrap5.css
- //cdn.datatables.net/editor/3.0.0/css/editor.bootstrap5.min.css
- //cdn.datatables.net/editor/3.0.0/css/editor.bulma.css
- //cdn.datatables.net/editor/3.0.0/css/editor.bulma.min.css
- //cdn.datatables.net/editor/3.0.0/css/editor.dataTables.css
- //cdn.datatables.net/editor/3.0.0/css/editor.dataTables.min.css
- //cdn.datatables.net/editor/3.0.0/css/editor.foundation.css
- //cdn.datatables.net/editor/3.0.0/css/editor.foundation.min.css
- //cdn.datatables.net/editor/3.0.0/css/editor.jqueryui.css
- //cdn.datatables.net/editor/3.0.0/css/editor.jqueryui.min.css
- //cdn.datatables.net/editor/3.0.0/css/editor.semanticui.css
- //cdn.datatables.net/editor/3.0.0/css/editor.semanticui.min.css
- //cdn.datatables.net/editor/3.0.0/css/envelope.scss
- //cdn.datatables.net/editor/3.0.0/css/fields.scss
- //cdn.datatables.net/editor/3.0.0/css/inline.scss
- //cdn.datatables.net/editor/3.0.0/css/lightbox.scss
- //cdn.datatables.net/editor/3.0.0/css/main.scss
- //cdn.datatables.net/editor/3.0.0/css/mixins.scss
- //cdn.datatables.net/editor/3.0.0/css/processing.scss
- //cdn.datatables.net/editor/3.0.0/css/static.scss
- //cdn.datatables.net/editor/3.0.0/css/template.scss
- //cdn.datatables.net/editor/3.0.0/css/upload.scss
- //cdn.datatables.net/editor/3.0.0/css/scss/bubble.scss
- //cdn.datatables.net/editor/3.0.0/css/scss/datatable.scss
- //cdn.datatables.net/editor/3.0.0/css/scss/dropdown.scss
- //cdn.datatables.net/editor/3.0.0/css/scss/editor.bootstrap.scss
- //cdn.datatables.net/editor/3.0.0/css/scss/editor.bootstrap4.scss
- //cdn.datatables.net/editor/3.0.0/css/scss/editor.bootstrap5.scss
- //cdn.datatables.net/editor/3.0.0/css/scss/editor.bulma.scss
- //cdn.datatables.net/editor/3.0.0/css/scss/editor.dataTables.scss
- //cdn.datatables.net/editor/3.0.0/css/scss/editor.foundation.scss
- //cdn.datatables.net/editor/3.0.0/css/scss/editor.jqueryui.scss
- //cdn.datatables.net/editor/3.0.0/css/scss/editor.semanticui.scss
- //cdn.datatables.net/editor/3.0.0/css/scss/envelope.scss
- //cdn.datatables.net/editor/3.0.0/css/scss/fields.scss
- //cdn.datatables.net/editor/3.0.0/css/scss/inline.scss
- //cdn.datatables.net/editor/3.0.0/css/scss/lightbox.scss
- //cdn.datatables.net/editor/3.0.0/css/scss/main.scss
- //cdn.datatables.net/editor/3.0.0/css/scss/mixins.scss
- //cdn.datatables.net/editor/3.0.0/css/scss/processing.scss
- //cdn.datatables.net/editor/3.0.0/css/scss/static.scss
- //cdn.datatables.net/editor/3.0.0/css/scss/template.scss
- //cdn.datatables.net/editor/3.0.0/css/scss/upload.scss