jQuery:选择具有唯一ID的所有输入(正则表达式/通配符选择器)

d30*_*020 9 regex jquery wildcard jquery-selectors

我在webform上有一些文本框,它们有这样的ID:

txtFinalDeadline_1
txtFinalDeadline_2
txtFinalDeadline_3
txtFinalDeadline_4
Run Code Online (Sandbox Code Playgroud)

在我的jQuery中,如何找到所有这些以便为它们赋值.在我有下划线之前,他们都被命名为txtFinalDeadline,我可以做到这一点并且有效.

$(this).find("#txtFinalDeadline").val(formatDate);
Run Code Online (Sandbox Code Playgroud)

然而,那时他们都被命名为同一件事.现在我的名字后面有_x,我不知道如何分配与之前相同的值.

Mat*_*att 6

我不知道我是否可以保证"按顺序",但这位选民应该工作:

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

即便如此,jQuery也经过优化id,以特殊方式处理s,并且可能只处理1个id.

更好的方法是让这些文本字段使用一个类(也许date),这样你就可以使用'.date'选择器.


sep*_*ehr 6

有多种方法可以进行正则表达式或通配符选择:

使用jQuery选择器的内联通配符:

$('#textFinalDeadline_\\S*').val(formatDate);
Run Code Online (Sandbox Code Playgroud)

更新: 我注意到自jQuery 1.3.2以来这个方法已不再有效.

使用CSS3选择器:

$('input[id^=textFinalDeadline_]').val(formatDate);
Run Code Online (Sandbox Code Playgroud)

使用.filter()&match():

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

最后,您可能想要使用正则表达式选择器.

$('input:regex(id, txtFinalDeadline_*)').val(formatDate);
Run Code Online (Sandbox Code Playgroud)