views:

593

answers:

3

I have some textboxes on a webform that have ids like this: txtFinalDeadline_1 txtFinalDeadline_2 txtFinalDeadline_3 txtFinalDeadline_4

In my jQuery how do I find all of those in order to assign a value to them. Before I had the underscore and they were all named txtFinalDeadline I could do this and it worked. $(this).find("#txtFinalDeadline").val(formatDate);

However, that was when they were all named the same thing. Now I have the _x after the name and I'm not sure how to go about assigning that same value as before to them.

Thanks.

A: 

Does Child Selector help you?

Jorge
+3  A: 

I don't know if I can guarantee "in order", but this elector should work:

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

Even then, jQuery is optimized to handle ids in a special way, and may only process 1 id.

A better way would be to have these textfields use a class (perhaps date) so you could just use the '.date' selector.

Matt
Thank you. That did work.
d3020
+8  A: 

There are multiple ways to do a regex or wildcard select:

Using jQuery selector's inline wildcards:

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

update: I noticed that this method is no longer working since jQuery 1.3.2.

Using CSS3 selectors:

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

Using .filter() & match():

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

At last you might want to use a regex selector.

$('input:regex(id, txtFinalDeadline_*)').val(formatDate);
Sepehr Lajevardi