2010-04-25 33 views
9

Tôi có một số textbox trên Webform có id như thế này:jQuery: chọn tất cả các nguyên liệu đầu vào với id duy nhất (Regex/Wildcard Selectors)

txtFinalDeadline_1 
txtFinalDeadline_2 
txtFinalDeadline_3 
txtFinalDeadline_4 

Trong jQuery tôi làm thế nào để tìm thấy tất cả những để gán một giá trị cho chúng. Trước khi tôi có dấu gạch dưới và tất cả chúng đều được đặt tên là txtFinalDeadline, tôi có thể làm điều này và nó hoạt động.

$(this).find("#txtFinalDeadline").val(formatDate); 

Tuy nhiên, đó là khi chúng được đặt tên giống nhau. Bây giờ tôi có _x sau tên và tôi không chắc chắn làm thế nào để đi về việc gán giá trị tương tự như trước cho họ.

Trả lời

6

Tôi không biết nếu tôi có thể đảm bảo "để", nhưng đại cử tri này nên làm việc:

$(this).find('input[id^=textFinalDeadline_]').val(formatDate);

Thậm chí sau đó, jQuery được tối ưu hóa để xử lý id s trong một cách đặc biệt, và có thể chỉ xử lý 1 id.

Cách tốt hơn là để các trường văn bản này sử dụng một lớp (có thể là date) để bạn chỉ có thể sử dụng công cụ chọn '.date'.

+0

Cảm ơn bạn. Điều đó đã làm việc. – d3020

6

Có nhiều cách để làm một regex hoặc wildcard chọn:

Sử dụng ký tự đại diện inline jQuery selector của:

$('#textFinalDeadline_\\S*').val(formatDate); 

update:tôi nhận thấy rằng phương pháp này không còn làm việc kể từ jQuery 1.3.2.

Sử dụng selectors CSS3:

$('input[id^=textFinalDeadline_]').val(formatDate); 

Sử dụng .filter() & match():

$('input').filter(function(){ 
    return this.id.match(/txtFinalDeadline_*/); 
}).val(formatDate); 

Cuối cùng bạn có thể muốn sử dụng một regex selector.

$('input:regex(id, txtFinalDeadline_*)').val(formatDate); 
Các vấn đề liên quan