我有一个html表单(我无法编辑),没有ID和名称属性,如下所示:
名称= “元数据[团队成员] [42] [名称]”
我需要做两件事。
检测元数据[团队成员]是否和更改或更新的实例。
如果是,则将INT保持在第二个数组级别。
这是我到目前为止所得到的:
$('[name="metadata[team-member]"]').on('change', function() {
alert('woo');
});
这甚至没有检测到正在改变的领域。 作为参考,这是成员姓名,电子邮件和状态的列表。所以其他领域将是: name =“metadata [team-member] [42] [email]等...但我不关心,我只需要INT。
答案 0 :(得分:2)
这是因为您的选择器错误,在这种情况下name属性为metadata[team-member][42][name]
。由于您使用的是attribute equals过滤器,因此会查找完整匹配
您可以更改选择器以使用starts with选择器,这将选择名称以metadata[team-member]
开头的所有元素
$('[name^="metadata[team-member]"]')
获取处理程序内的int值
var name = this.name;
var intpart = 'metadata[team-member][42][name]'.match(/\[(\d+)\]/)[1];
答案 1 :(得分:1)
使用正则表达式从名称中获取id:
$('[name^="metadata[team-member]"]').on('change', function() {
var name = $(this).attr('name');
var id = parseInt(name.match(/\d{2}/)[0]);
});
答案 2 :(得分:1)
我勾画了一个小样本
$('input[name="test[test]"]').on('change', function(){
alert(123);
});
看看这个
http://jsbin.com/oyogec/1/