How To Create Field Placeholder Text Using Behaviors
This lesson will demonstrate how to create a field that displays placeholder text when the field is a) empty and b) does not have focus.
If you are not familiar with how to assign behaviors then please see How to Assign a Behavior.
Sample stack url: https://tinyurl.com/y7347bpu
What I Will Create

The behavior I will show you will display placeholder text in a field when the field is empty and does not have focus. The field will be light gray.

When the field has focus the placeholder text will disappear and the text color will be inherited (usually black).
Setting the Placeholder Text

You assign the placeholder text by setting the uPlaceholderText custom property (1) of the field (2). The behavior (3) will display this text when appropriate.
You must get and set the text of the field using the uText or uUTF8Text custom properties that are defined in the behavior. These custom properties only return a value if the user has entered some text. They won't return the text if the placeholder is being displayed.
set the uText of field "Field" to "Some Text"
put the uText of field "Field"
The Behavior Script
This is the script of the behavior. In the example stack it is stored in the Placeholder Text Behavior button.
==========
COPY & PASTE
==========
--> Script Locals
constant kPlaceholderTextColor = "125,125,125"
local sDefaultTextIsDisplayed ## Keeps track of whether or not default text is being displayed
--> Accessors
getprop uText
if sDefaultTextIsDisplayed then
return empty
else
return the text of me
end if
end uText
setprop uText pText
lock screen
_ClearDefaultText
set the text of me to pText
_DisplayDefaultText
unlock screen
end uText
getprop uUTF8Text
if sDefaultTextIsDisplayed then
return empty
else
return unidecode(the unicodetext of me, "utf8")
end if
end uUTF8Text
setprop uUTF8Text pText
lock screen
_ClearDefaultText
set the unicodetext of me to uniencode(pText, "UTF8")
_DisplayDefaultText
unlock screen
end uUTF8Text
--> Engine messages
on openField
## If default text is displayed then clear it out
_ClearDefaultText
pass openField
end openField
on closeField
_DisplayDefaultText
pass closeField
end closeField
on exitField
_DisplayDefaultText
pass exitField
end exitField
private command _ClearDefaultText
if sDefaultTextIsDisplayed then
lock screen
set the text of me to empty
set the textcolor of me to empty ## inherit default color
unlock screen
end if
## Reset
put false into sDefaultTextIsDisplayed
end _ClearDefaultText
private command _DisplayDefaultText
## Reset
put false into sDefaultTextIsDisplayed
## Is text empty?
if the text of me is empty then
## Am I focused? If so then don't do anything.
if the focusedobject is not the long id of me then
lock screen
set the text of me to the uPlaceholderText of me
set the textcolor of me to 125,125,125
put true into sDefaultTextIsDisplayed
unlock screen
end if
end if
end _DisplayDefaultText
Maybe it's because this is old but I simple created a field and added:
on openField
if the text of me is "Enter Keyword (s)" then
set the text of me to ""
end if
end openField