- Multiple inputs may be interconnected in such way that client side events that occur on one input can trigger actions on the context of other inputs. Developers may use input interconnection support without writing Javascript code.
- Can be extended with new types of input controls plug-in classes.
- Custom input plug-in classes can be used to support for handling client site events on the server side without submitting the form or redrawing the whole form page
- Some control plug-in classes are made available:
* AJAX based form submission (without reloading the whole page)
* Auto-complete text inputs
* Select a location on a map using Google Maps API
* Calendar date input
* CAPTCHA test to prevent automated access by robots
* Linked select input to switch select options when the value of another input changes. An unlimited number of selected can be linked in cascade. Additional plug-in subclasses are provided to retrive option groups from a MySQL database or many other SQL databases using the Metabase PEAR::MDB2 PHP database abstraction layer APIs
* Manage animations that apply visual effects to the page form elements, like: fade-in, fade-out, show, hide, update content, etc..
- XHTML compliant output.
- Load submitted form field values even with register_globals option Off and strip slashes when magic_quotes_gpc option is On.
- Keyboard navigation support:
* Attachment of labels with activation keys to each form field.
* Tab navigation order index.
- Built-in server side (PHP based) and client side (Javascript 1.0 or better) field validation for:
* E-mail address
* Credit card numbers (Visa, Mastercard, American Express, Discover, Diners Club, Carte Blanche, enRoute, JCB, any of these or even determined by a select field).
* Regular expressions.
* Field not empty.
* Field equal to another (useful for password confirmation fields).
* Field different from another (useful for reminder fields that must not be equal to the actual password).
* As set (for check boxes, radio buttons and select multiple fields).
* As integer number (with range limitation).
* As floating point number (with range limitation).
* Programmer defined client and server validation functions.
- Highlight invalid fields rendering them distinct CSS styles
- Security attack prevention by optionally discarding invalid values passed in fields that could not be edited by users but may be spoofed by attackers.
- Option to define a value that, when used in a field, it is accepted without performing any of the validations defined for the field.
- Ability to stop the user from submiting a form more than once inadvertdly.
- Sub form validation (validate only smaller set of field depending on the submit button that was used).
- Composition and generation of the form HTML output with fields displayed as fully accessible or in read-only mode.
- Generation of Javascript functions (useful to set to the page ONLOAD event):
* Set the input focus to a field.
* Select the text of a field.
* Set the input focus and select the text of a field.
* Enable and disable input fields
- Automatic capitalization of the text of a field:
* Upper case.
* Lower case.
* Word initials
- Replacement of text field expressions to perform adjustments like trimming whitespace or auto-complete values based on rules defined by regular expressions
- Compose forms with templates using plain HTML files with embedded PHP code or using the Smarty template engine with a supplied pre-filter plugin
- Etc.
This class can be used to split MySQL query results displayed in pages retrieved using AJAX.
It takes a MySQL query and computes the total number of rows it returns to generate HTML links in order to browse different pages of the query results.
Each page displays up to a given limit number of results.
The generated links trigger the execution of JavaScript code that retrieves the contents of the respective page using AJAX requests.
The class can also execute queries to perform searches for information in given columns.
It has a jquery plugin that handles requests and responses just for flexibility
This class can be used to generate HTML and Javascript to make AJAX calls to update pages without reloading.
It generates HTML and Javascript functions that when called will perform AJAX requests and update specified page sections with data returned by the server as response to the AJAX requests.
The generated Javascript code may submit AJAX requests using the GET or POST methods.
While the response is not returned, a loading message is displayed in the page section to be updated.
This class can be used to Edit MySQL data in a table using AJAX for updates.
It can connect to a MySQL database directly or using ADODB and executes a query to retrieve data from a given table.
The MySQL table fields to display in the data grid table columns are configurable. The data from certain columns be displayed as images, totals or values calculated according to a given formula.
The data may also be displayed as bar charts.
The listing may have links to sort, add, edit, delete, search and view individual table records. The listing colors may be alternated and the rows may be highlighted when the user drags the mouse pointer over them. The links may be displayed with given icon images. The presentation of several aspects may be defined using CSS styles.
The record rows may be selected using respective form checkbox inputs.
A form may be presented to search for records with user defined values in given columns.
The records being listed or edited in place may be updated using AJAX request to avoid page reloading in any type of browser.
It may also show links or a form select input to go to the other pages when the listing split into multiple pages.
The text messages shown with the listing can be displayed in multiple languages. Currently English, Dutch, German, Spanish, French, Italian, Czech and Portuguese are built-in supported idioms.
This class can be used to generate HTML forms that can be submitted via AJAX.
It can generate HTML for the most common types of form inputs.
The class ends the form generating a submit input. When this input is clicked, the form input values are collected and submitted to a given Web page script via AJAX using the POST method.
The response of the submission page script is displayed within a given div section.
This class can be used to browse files uploaded via Web forms using AJAX methods to send the files without reloading the form page.
There is auxiliary Javascript code that can upload in the background a file that the users chooses in a Web page form and updates the upload message status in the page.
A server side auxiliary script gets the uploaded files and copies to an upload directory.
The class can be used to scan the upload directory and list the previously uploaded files according to different types: image, sound, video and other.