I have a TextArea, a TextInput and a button. When text is entered into the TextInput the TextArea is searched for the matching string, however it only highlights the first found instance of the string. How can I do a ‘find next’ type of operation.
protected function searchBtn_clickHandler():void
{
text = mainTextField.text;
search_Str = searchTxt.text;
var search_result:int = text.search(search_Str);
trace(search_result);
mainTextField.setFocus();
mainTextField.selectRange(search_result,search_result+search_Str.length);
}
EDIT
protected function searchBtn_clickHandler():void
{
text = mainTextField.text;
search_Str = searchTxt.text;
search_result = text.search(search_Str);
trace(search_result);
mainTextField.setFocus();
mainTextField.selectRange(search_result,search_result+search_Str.length);
oldSearch_result = search_result;
}
protected function findNextBtn_clickHandler():void
{
search_Str = searchTxt.text;
// truncate the text using substring; this gives you everything in mainTextField after your previous search results
var truncatedText:String = mainTextField.text.substring(oldSearch_result+search_Str.length);
search_result = truncatedText.search(search_Str);
mainTextField.setFocus();
// when you select the range, you want to offset your result index w/ the characters your chopped off
mainTextField.selectRange(oldSearch_result+search_Str.length+search_result,search_result+search_Str.length);
}
When the user clicks “find next” button, just truncate the text based on the search_str.length and search_result–in memory–and perform the search again.
More info on substring
Edit 12/7/2011
Here is a full code sample showing this approach working: