2012-02-18 30 views
10

Tôi có một biến chứa các đối tượng dạng khác nhau như thế này… $(formId)jQuery: chọn đầu vào con đầu tiên bên trong biểu mẫu nhưng không phải khi loại: bị ẩn?

Mỗi biểu mẫu khác nhau có trường nhập ẩn là phần tử đầu tiên hoặc phần tử con đầu tiên là đầu vào bình thường (type = "text" hay cái gì khác)

làm thế nào tôi có thể luôn luôn chọn những "bình thường" lĩnh vực đầu vào đầu tiên

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

tôi nghĩ rằng nó nên được một cái gì đó như thế này. Vì vậy, nếu bạn tự hỏi những gì tôi cần điều này cho - Tôi muốn đặt trọng tâm vào trường đầu vào đầu tiên trong biểu mẫu, nhưng nếu đầu vào đầu tiên là một ẩn tôi tất nhiên muốn đặt nó vào đầu vào "nhìn thấy" tiếp theo.

Trả lời

18

Bộ chọn :first-child chọn một yếu tố mà là đứa con đầu lòng, không mục đầu tiên trong một Bộ sưu tập jQuery.
Để chọn phần tử đầu tiên của bộ sưu tập, hãy sử dụng bộ chọn :first của jQuery.

Việc triển khai :not của bạn cũng sai.
:not[type='hidden']bằng:not()[type='hidden']bằng[type='hidden'] - Các ngược những gì bạn muốn.


Đây là những bộ chọn đúng (họ đang tương đương):

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

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

+3

': [! Type = "hidden"] visible' là không bằng' '. Nếu bạn thêm 'style =" display: none "' vào phần tử đầu vào, nó ** không **: hiển thị', nhưng nó ** không khớp với '[type! =" Hidden "]'. –

0

Có sử dụng công cụ chọn ẩn: trong trường hợp của bạn không?

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

(Không phải như vậy chắc chắn tôi có được những gì đánh dấu của bạn trông giống như ...)

+3

Bộ chọn ': first-child' chọn một phần tử là con đầu tiên. Để chọn phần tử đầu tiên của một bộ sưu tập, hãy sử dụng bộ chọn ': first' của jQuery:' input: not ([type = hidden]): first'. –

+0

@Rob W: điều này dường như hoạt động hoàn hảo và trông giống như giải pháp đúng. Nếu bạn đăng nó như là câu trả lời tôi sẽ chấp nhận nó. – matt

Các vấn đề liên quan