Использовать равный оператор не назначать.
while( ( $pass < 3 ) && ( $result == 0 ) )
Это должно работать.
Это невозможно, потому что взаимодействие с текстовыми полями всегда делается однопоточным и обрабатывается циклом сообщения / события, где всегда обрабатывается одно сообщение / событие за один раз.