<textfield/>
- Jacques Marais
- jcrowther
- Former user (Deleted)
Description
The text field widget is a basic labeled input widget with a small area for text representing an int
, decimal
 or string
 basic data type.
Is allows for binding of values to basic variables or attributes of objects instances in a unit.
It also allows for binding to a variable, object instance attribute or function in order to determine if the widget is hidden or not.
The title is specified as a key to a lang file entry and is required.
A new addition in version 1.57.0 (specific to the new UI) is the description
attribute. The description attribute works similarly to the title in that it is specified as a key to a lang file entry, however, its purpose is to allow for additional information related to an input and will appear beneath the input.
In addition, the text field widget provides a datatype
 attribute that can be used to slightly alter the behaviour of the text field widget. Possible values and their related behaviour is as follows:
datatype="number" | Allows only numbers to be entered. Provides scroller buttons that increment and decrement the current value. |
datatype="password" | Displays a * character instead of the characters entered by the user in order to hide a password. |
datatype="text" | Default behaviour assuming the widget is bound to a basic data type that is not of type int. |
datatype="tel" | Provides additional validation for phone numbers. |
datatype="email" | Provides additional validation for email addresses. |
datatype="url" | Provides additional validation for URLs. |
Note that when the text field is bound to a variable of type int
it will behave as though datatype="number"
has been specified even though it hasn't.
The title is specified as a key to a lang file entry and is required. A tooltip can also be specified as a key to a lang file entry but is optional. Visibility bindings are also supported.
Example
Implied number datatype
The abbreviated code snippets and screenshot below shows the use of <textfield/>
 with a value binding to an object instance attribute and a visibility binding to a unit function. It uses the default datatype behaviour.
 <textfield label="textfield.quantity_to_purchase"> <visible function="showPurchaseForm"/> <binding variable="farmerPurchase"> <attribute name="purchaseQuantity"/> </binding> </textfield>
FarmerPurchase farmerPurchase; bool makingPurchase; bool stockItemSelected; void init() { farmerPurchase = FarmerPurchase:new(); makingPurchase = true; stockItemSelected = false; } . . . bool showPurchaseForm() { if(makingPurchase == true && stockItemSelected == true) { return true; } return false; }
 textfield.quantity_to_purchase = Quantity to purchase:
<textfield> bound to int type or using datatype="number"
Password datatype
<textfield label="textfield.password" datatype="password"> <binding variable="userPassword"/> </textfield>
<textfield> using datatype="password"
Implied text datatype
persistent object SystemAdmin { @requiredFieldValidator("validator.required_field") string firstName; . . }
<textfield label="textfield.first_name"> <binding variable="systemAdmin"> <attribute name="firstName"/> </binding> </textfield>
<textfield> not bound to an int type and using the default behaviour
Additional Mentions and References
- Devoted section to the text field widget in the Helium Tutorial Lesson 3: User Input, Persistence, Validation, and Tables (continued)
- Devoted sub section to the datatype attribute in the Helium Tutorial Lesson 3: User Input, Persistence, Validation, and Tables (continued)
- Helium DSL and View Quick Reference