9

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.

Qantas 94 Heavy
  • 15,750
  • 31
  • 68
  • 83
d3020
  • 537
  • 3
  • 7
  • 16

3 Answers3

6

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
  • 43,482
  • 6
  • 101
  • 102
6

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
  • 17,110
  • 7
  • 81
  • 119
0

Does Child Selector help you?

Jorge Guberte
  • 10,464
  • 8
  • 37
  • 56