问题
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.
回答1:
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 id
s 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.
回答2:
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);
回答3:
Does Child Selector help you?
来源:https://stackoverflow.com/questions/2707265/jquery-select-all-inputs-with-unique-id-regex-wildcard-selectors