0

我有一个没有 ID 和 name 属性的 html 表单(我无法编辑),如下所示:

名称="元数据[团队成员][42][名称]"

我需要做两件事。

  1. 检测 metadata[team-member] 的实例是否曾经更改或更新。

  2. 如果是这样,则将 INT 保存在第二个数组级别。

这是我到目前为止所得到的:

$('[name="metadata[team-member]"]').on('change', function() {
    alert('woo');
});

这甚至没有检测到正在更改的字段。作为参考,这是成员姓名、电子邮件和状态的列表。所以其他字段将是:name="metadata[team-member][42][email] 等...但我不在乎,我只需要 INT。

4

3 回答 3

2

这是因为您的选择器错误,名称属性metadata[team-member][42][name]在这种情况下。由于您使用的是属性等于过滤器,因此它会查找完全匹配

您可以更改选择器以使用选择器开头,这将过滤名称以开头的所有元素metadata[team-member]

$('[name^="metadata[team-member]"]')

在处理程序中获取 int 值

var name = this.name;
var intpart = 'metadata[team-member][42][name]'.match(/\[(\d+)\]/)[1];
于 2013-06-24T10:46:09.893 回答
1

使用正则表达式从名称中获取 id:

$('[name^="metadata[team-member]"]').on('change', function() {
    var name = $(this).attr('name');
    var id = parseInt(name.match(/\d{2}/)[0]);
});
于 2013-06-24T10:55:28.043 回答
1

我画了一个小样本

$('input[name="test[test]"]').on('change', function(){

  alert(123);

});

看看这个 http://jsbin.com/oyogec/1/

于 2013-06-24T10:55:59.637 回答