This simple selector finds the first empty text input field in my form but skips over password type inputs:
$(\'input:text[value=\"\"]:first\').focus();
$('input:text[value=""]').add('input:password[value=""]').first().focus();
I don't think there is a better way. That's what I thought before taking a look at @Hari Das answer which has an issue but brings alternative solution to my mind:
$('input:text[value=""],input:password[value=""]').first().focus()
Choose the one which is more readable to you.