Проверьте JSFIDDLE, атрибут rel в предупреждении выводится как "undefined":
var ItemTypeArray = $('input[name^=ItemType]:checked').map(function(){
alert(this.id + ' , r= ' + this.rel);
return this.rel + '--' + this.value;
}).get().join(",");
Кроме того, эта функция дает строку, но мне нужен массив, который будет создан для публикации.
Там нет такого атрибута, называемого rel
на input
(есть и в теге link
). Вместо этого вы должны использовать атрибуты data
:
<input id="SOLD[1]" value="1" name="ItemType[1]" type="radio" data-rel="1">
<input id="PURCHASED[1]" value="2" name="ItemType[1]" type="radio" checked="checked" data-rel="1">
Тогда вы можете сделать:
var ItemTypeArray = $('input[name^=ItemType]:checked').map(function () {
alert(this.id + ' , r= ' + $(this).data("rel"));
return $(this).data("rel") + '--' + this.value;
}).get().join(",");
Или, чтобы вернуть то, что вы указали в комментариях (массив), вы можете сделать:
var ItemTypeArray = [];
$('input[name^=ItemType]:checked').each(function () {
ItemTypeArray.push(this.id + ' = ' + $(this).data("rel"));
});
См. ЗДЕСЬ
Я просто включил jquery и изменил ваш код следующим образом. Используйте $(this).attr('rel')
вместо this.rel
var ItemTypeArray = $('input[name^=ItemType]:checked').map(function () {
alert(this.id + ' , r= ' + $(this).attr('rel'));
return this.rel + '--' + this.value;
}).get().join(",");
Вот jsfiddle
пытаться
$(this).attr("rel")
это даст вам значение атрибута с именем rel '