TextField.onSetFocus( ) Event Handler | Flash 6 |
callback invoked when the field gains focus |
The TextField, MovieClip, or Button object that previously had focus, or null if no object was previously focused.
The onSetFocus( ) event is triggered when theField gains focus. A text field is said to have focus when it contains the text insertion point or when characters within it are selected. A field gains focus when:
The user clicks it with the mouse or navigates to it with the Tab key.
Selection.setFocus( ) assigns focus programmatically.
When a text field's selectable property is false, the field cannot be focused by the user, but it can be focused programmatically with Selection.setFocus( ).
The following code registers a callback function that responds to onSetFocus( ):
// Create a text field that accepts user input this.createTextField("theField_txt", 1, 0, 0, 200, 20); theField_txt.type = "input"; theField_txt.border = true; // Assign the onSetFocus() callback using a function literal theField_txt.onSetFocus = function (newFocus) { trace(this + " now has focus. Old focus was " + newFocus); };
Notice that from the body of the callback we can refer to theField_txt using the this keyword. To stop a callback from handling the onSetFocus( ) event, use the delete operator, as in:
// Make sure to omit the () operator after the function name! delete theField_txt.onSetFocus;
To capture all focus events centrally, rather than for a single instance, use Selection.onSetFocus( ).
The following code uses onSetFocus( ) and onKillFocus( ) to highlight a field with color when it is focused, providing a nice interface cue for the user:
this.createTextField("userName_txt", 1, 0, 0, 200, 20); userName_txt.type = "input"; userName_txt.border = true; userName_txt.background = true; userName_txt.backgroundColor = 0xA4660B; userName_txt.onSetFocus = function (oldFocus) { this.backgroundColor = 0xF5BF70; } userName_txt.onKillFocus = function (newFocus) { this.backgroundColor = 0xA4660B; }
To apply this effect to all text fields in a movie, use:
TextField.prototype.onSetFocus = function (oldFocus) { this.backgroundColor = 0xF5BF70; } TextField.prototype.onKillFocus = function (newFocus) { this.backgroundColor = 0xA4660B; }
Selection.onSetFocus( ), Selection.setFocus( ), TextField.background, TextField.backgroundColor, TextField.onKillFocus( ), TextField.selectable, TextField.tabEnabled, TextField.tabIndex, TextField.type; Chapter 10