所以我正在使用 padolsey's regex filter尝试选择动态生成的嵌套表单字段。为什么我在下面的选择器代码中一直为 test 获取空值?
jQuery.expr[':'].regex = function(elem, index, match) {
var matchParams = match[3].split(','),
validLabels = /^(data|css):/,
attr = {
method: matchParams[0].match(validLabels) ?
matchParams[0].split(':')[0] : 'attr',
property: matchParams.shift().replace(validLabels,'')
},
regexFlags = 'ig',
regex = new RegExp(matchParams.join('').replace(/^s+|s+$/g,''), regexFlags);
return regex.test(jQuery(elem)[attr.method](attr.property));
}
//selector code
$(document).ready(function() {
var test = $('input:regex(id, agreement_activities_attributes_\d*_id)');
console.log(test);
});
包含我要选择的输入字段的 html 代码
<input id="agreement_activities_attributes_0_id" name="agreement[activities_attributes][0][id]" type="hidden" value="28" />
最佳答案
代码中有错误。
.replace(/^s+|s+$/g,'')
应该是
.replace(/^\s+|\s+$/g,'')
那么它应该可以工作了。
替换会移除所有周围的空格( trim 字符串)。您在选择器 ( :regex(id, agreement_activities_attributes_\d*_id)
) 中使用的空格将包含在匹配模式中,因此只会匹配 ID 以空格开头的元素。
关于javascript - 为什么我不能在 jQuery 中使用这个正则表达式过滤器选择这个输入字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30134606/