Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

jQuery: select all inputs with unique id (Regex/Wildcard Selectors)

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.

like image 397
d3020 Avatar asked Feb 03 '23 04:02

d3020


2 Answers

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.

like image 61
Matt Avatar answered Feb 06 '23 04:02

Matt


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);
like image 20
sepehr Avatar answered Feb 06 '23 06:02

sepehr