2012-02-18 7 views
10

Böyle farklı form nesneleri tutmak bir değişken ... $(formId)jQuery: form içindeki ilk-alt girişi seçin, ancak yazım türü değil: gizli?

Her form olduğu gibi farklıdır var Birinci elemanın veya birinci çocuk olarak bir gizli giriş alanı normal girdidir sahiptir (type = "text" veya başka bir şey)

nasıl DAİMA ben böyle bir şey olması gerektiğini düşündüm

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

ilk "normal" giriş alanını seçebilir. Yani, bunun için neye ihtiyacım olduğunu merak ediyorsanız - odağı formdaki ilk giriş alanına ayarlamak istiyorum, ancak ilk giriş gizli ise, elbette onu bir sonraki "görünür" girdiye ayarlamak istiyorum. sizin durumunuzda gizli selektör çalışmaları:

cevap

18

:first-child seçici ilk çocuk, değil bir ilk öğe olan bir öğe seçer (Ben ... gibi İşaretlemenizin benzediğini olsun o kadar emin değil) jQuery koleksiyonu.
Koleksiyonun ilk öğesini seçmek için jQuery'nin :first seçicisini kullanın.

:not'un uygulamanız da yanlıştır.
:not[type='hidden']:not()[type='hidden']eşittir[type='hidden'] eşittir - İstediğiniz şeyin zıt.


Bunlar doğru seçiciler (onlar eşdeğer konum):

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

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

+3

': [! Type = "gizli"] visible'' eşit değil '. Eğer bir giriş öğesine 'style =" display: none "' eklerseniz, ** **:: visible' değil **, '' [type! = "Hidden"] 'ile eşleşir. –

0

kullanarak misiniz?

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

+3

'first-child' selektörü ilk çocuk olan bir elemanı seçer. Bir koleksiyonun ilk elemanını seçmek için jQuery'nin ': first' selector:' input: not ([type = hidden]) kullanın: first'. –

+0

@Rob W: Bu mükemmel çalışıyor ve doğru çözüm gibi görünüyor. Cevap olarak gönderirsen kabul edeceğim. – matt