如何在jquery属性中使用regex



我尝试使用regex来查找索引id为"modal[index]"的所有元素像这个

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

该错误引发

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

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

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

如何找到这些元素?

您可以使用JQuery的过滤函数,下面的示例应该适用于您。源

$('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循环做了一些更改

(varj=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"/>

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

如果您的id看起来像modal[1]modal[2],那么:

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

对我有效的解决方案是使用CSS选择器从输入属性中删除禁用的属性,而不使用类似的regex

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

感谢大家的回答

最新更新