jQuery: seleccionando el primer ingreso de texto vacío

Considere este HTML:

  More 

La intención aquí es que los usuarios ingresen valores en los campos del formulario y, si desean más campos, al hacer clic en el enlace ejecutará este jQuery:

 $('a').click( function(e) { e.preventDefault(); $(this).before(''); //refocus on the first empty input $('input[value=""]:first').focus(); }); 

Entonces, el “Usuario A” completa los dos campos de formulario, hace clic en el enlace “Más”, se agregan dos campos de entrada más y el navegador se enfoca en el tercer campo general (debido a que es el primer campo vacío). Desafortunadamente, el código selecciona el primer campo general. Puedo hacer que se centre en el último campo de entrada … no hay problema … pero si el usuario hace clic en “Más” varias veces antes de completar campos adicionales, todavía quiero centrarme en el primer campo vacío.

¿Qué me estoy perdiendo?

http://jsfiddle.net/TYjNE/1/

Está utilizando un selector de atributo, pero el value atributo no se actualiza cuando cambia el valor de la input .

En lugar de eso, recórralos y solo concéntrate en el que tiene un valor vacío:

 $('input[name="userinput[]"]').each(function() { if ( this.value === '' ) { this.focus(); return false; } }); 

Aquí está tu violín: http://jsfiddle.net/TYjNE/2/

El siguiente código lo ayudará a encontrar si el primer campo de entrada está vacío en una lista de todos los campos de entrada del formulario.

  $(document).ready(function(){ $('a').click( function(e) { e.preventDefault(); $('').insertBefore(this); $('input[type="text"]').each(function() { if ( this.value === '' ) { this.focus(); return false; } }); }); }); 

Espero que hayan querido esto. Te ayuda a encontrar el primer campo vacío. Aquí está el fiddle echa un vistazo. http://jsfiddle.net/TYjNE/4/