Foco no primeiro campo vazio

Foco no primeiro campo vazio, independente do tipo! :)

by gsguma

HTML

<input />
<select>
    <option></option>
    <option>Selecionado</option>
</select>
<textarea></textarea>
<input id="btnSubmit" type="button" value="Submit" />

CSS

input, select, textarea {
    border: 1px solid #808080;
    padding: 5px;
}

input, textarea {
    width: 98%;
}
select, input[type=button], button {
    width: 100%;
}
input[type=checkbox]{
    width:auto;
}

JavaScript

$(function() {
    var $fields = $(':input:visible:enabled:not(:button),textarea:visible:enabled, select:visible:enabled');

    $('#btnSubmit').click(function() {
        $fields.filter(function() {
            if ($(this).val() === '') {
                return true;
            }
        }).first().focus();
    });
});