如何在jQuery属性中使用正则表达式?

时间:2018-11-27 08:53:49

标签: jquery regex

我尝试使用正则表达式来查找所有索引ID为“ modal [index]”的元素 像这样

$("input[id=modal[\[0-9\+]]").attr("disabled", "false");

出现此错误

  

未捕获的错误:语法错误,无法识别的表达式:   输入[id = modal [[0-9 +]]

并尝试使用for循环,但发生了相同的错误

for(var j=1;j<11;j++)
    $("input[id=modal["+j+"]]").attr("disabled", "false");

如何找到这些元素?

4 个答案:

答案 0 :(得分:0)

var regix =新的RegExp([0-9 +]); 进一步了解其功能,例如.test等

答案 1 :(得分:0)

如果您的ID类似于 modal [1] modal [2] ,则:

for(var j=1;j<11;j++) {
  $("input#modal["+j+"]").attr("disabled", "false");
}

答案 2 :(得分:0)

您可以使用JQuery的filter function,下面的示例将为您工作。 source

$('input')
  .filter(function() {
      return this.id.match('\[0-9\+]');
  }).attr("disabled", "false");
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" id="modal[8]" value="this textbox will disabled"/>
<input type="text" id="modal[a]" value="this will not"/>

,如果要使用for循环实现此功能,请考虑以下示例。

我对您的for循环所做的更改很少

  

for(var j=0; j <$("input[type='text']").length; j ++)

     

$(“ input [id = 'modal["+j+"]']”)

for(var j=0;j<$("input[type='text']").length;j++)
    $("input[id='modal["+j+"]']").attr("disabled", "false");
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" id="modal[0]" value="this textbox will disabled"/>
<input type="text" id="modal[1]" value="this will not"/>

答案 3 :(得分:0)

对我有用的解决方案是使用CSS选择器从输入属性中删除禁用的属性,而无需像这样使用regex

$('input[id^=modal]').removeAttr("disabled");

谢谢大家的回答