我尝试使用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循环做了一些更改
(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"/>
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");
感谢大家的回答