The loop would apply to all clients that match the target name instead of just the 1. The whole point is you're selecting 1 player through a menu (if there are multiple matches).
You need a callback if the client is gonna be a selecting that player through a menu at a later point.
You could use ProcessTargetString in the stock function itself and wrap it with the menu/callback stuff but I had issues with it before in terms of bot/self selection so I do the StrContains with all clients instead.