2012-02-18 16 views
10

tengo una variable que mantienen diferentes form-objetos como este ... $(formId)jQuery: seleccione la entrada del primer hijo dentro del formulario, pero no cuando escriba: oculto?

Cada forma es diferente como en cualquiera tiene un campo de entrada oculto como el primer elemento o el primer hijo es una entrada normal (type = "text" o algo más)

cómo puedo seleccionar siempre el primer campo "normal" de entrada

$(formId).find("input:first-child:not[type='hidden']") 

pensé que debería ser algo como esto. Entonces, si se pregunta para qué necesito esto, quiero establecer el foco en el primer campo de entrada en el formulario, pero si la primera entrada es una oculta, por supuesto quiero establecerla en la siguiente entrada "visible".

Respuesta

18

El selector :first-child selecciona un elemento que es el primer hijo, no el primer elemento de una colección jQuery.
Para seleccionar el primer elemento de una colección, use el selector :first de jQuery.

Su implementación de :not también es incorrecta.
:not[type='hidden']es igual a:not()[type='hidden']es igual a[type='hidden'] - El opuesta de lo que quiere.


Estos son los selectores adecuados (que son equivalentes):

input:not([type=hidden]):first 
input[type!=hidden]:first 
8

$(formId).find ('input:visible:first').focus();

+3

': [! Type = "oculto"] visible' no es igual a' '. Si agrega 'style =" display: none "' a un elemento de entrada, ** no ** ': visible', pero ** hace ** match' [type! = "Hidden"] '. –

0

Would mediante el: selector trabajan oculto en su caso?

$(formId).find("input:first-child:not(:hidden)") 

(No estoy tan seguro que consiga lo ve como su margen de beneficio ...)

+3

El selector ': first-child' selecciona un elemento que es el primer elemento secundario. Para seleccionar el primer elemento de una colección, use el selector ': first' de jQuery:' input: not ([type = hidden]): first'. –

+0

@Rob W: parece que funciona perfecto y se ve como la solución correcta. Si lo publicas como respuesta, lo aceptaré. – matt

Cuestiones relacionadas