2013-06-24 2 views
0

Я получил форму HTML (я не могу редактировать) без ID и имя атрибут, как это:Jquery, получить значение многомерного массива ключевого

имени = "метаданные [член команды] [42] [ имя] "

Мне нужно сделать две вещи.

  1. Обнаружить, если и экземпляр метаданных [член команды] постоянно изменяется или обновляется.

  2. получить INT, находящийся на втором уровне массива, если это так.

Вот что у меня до сих пор:

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

И это даже не обнаружит поле изменяется. Для справки, это список членов, имя, адрес электронной почты и статус. так что другие поля будут: name = "metadata [team-member] [42] [email] и т. д. Но мне все равно, мне просто нужен INT.

ответ

2

Это потому, что ваш селектор является неправильным, имя атрибут в этом случае metadata[team-member][42][name]. Поскольку вы используете attribute equals фильтра он выглядит для полного матча

вы можете изменить селектор использовать starts with селектор, который будет filtler всех элементов запускается чье имя с metadata[team-member]

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

Чтобы получить значение int внутри обработчика

var name = this.name; 
var intpart = 'metadata[team-member][42][name]'.match(/\[(\d+)\]/)[1]; 
+0

Это решение, которое я использовал. Я буду обновлять свой вопрос, чтобы включить мою конкретную версию в ближайшее время .. Большое спасибо ..! – Beertastic

1

Использование регулярных выражений, чтобы получить идентификатор от имени:

$('[name^="metadata[team-member]"]').on('change', function() { 
    var name = $(this).attr('name'); 
    var id = parseInt(name.match(/\d{2}/)[0]); 
}); 
+0

Отлично! Я сделал это в закладки для дальнейшего использования. – Beertastic

1

я набросал маленький образец

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

    alert(123); 

}); 

взгляд на эту http://jsbin.com/oyogec/1/