Проверка переключателя Javascript не работает с использованием столбцов

0

У меня есть таблица, в которой у меня есть одна форма для каждого словаря, каждая форма имеет три переключателя, я хотел бы получить значение radioButton и сохранить его в массиве. Получение предупреждения изнутри корпуса коммутатора в этой функции не работает:

 var registerEventToRadio = function registerEventToRadio(formName, radioName, radio) {
//alert('aaaa'); works uncommenting this causes 9 alerts...
var mandyEvent = function mandyEvent(event) {
    switch (formName) {
        case 'rowform_chandelier':
            mandatoryArr[0] = 1;
            alert(1); //does not work
            break;
        case 'rowform_fireplace':
            mandatoryArr[1] = 1;
            alert(1); //does not work
            break;
        case 'rowform_rooflights':
            mandatoryArr[2] = 1;
            alert(1); //does not work
            break;
    }
};

var viEvent = function viEvent(event) {
    switch (formName) {
        case 'rowform_chandelier':
            visibleArr[0] = 1;
            alert(1); //does not work
            break;
        case 'rowform_fireplace':
            visibleArr[1] = 1;
            alert(1); //does not work
            break;
        case 'rowform_rooflights':
            visibleArr[2] = 1;
            alert(1); //does not work
            break;
    }
};

var renoEvent = function renEvent(event) {
    switch (formName) {
        case 'rowform_chandelier':
            renameArr[0] = 1;
            alert(1); //does not work
            break;
        case 'rowform_fireplace':
            renameArr[1] = 1;
            alert(1); //does not work
            break;
        case 'rowform_rooflights':
            renameArr[2] = 1;
            alert(1); //does not work
            break;
    }
};
var i = 0;
for (i = 0; i < radio.length; i++) {
    if (radioName === 'mandatory') radio[i].onclick = mandyEvent;
    if (radioName === 'visible') radio[i].onclick = viEvent;
    if (radioName === 'rename') radio[i].onclick = renoEvent;
}

};

Эта функция вызывается следующим образом:

var reno = getRadioButtonArray(formName, 'rename');
registerEventToRadio(formName, 'mandatory', mandy);
registerEventToRadio(formName, 'visible', vi);
registerEventToRadio(formName, 'rename', reno);

Это JSFiddle, который состоит из всего кода, используемого там.

Теги:
dom

1 ответ

1
Лучший ответ

Ваш getRadioButtonArray возвращает один элемент радио, а не массив, поэтому ваш код ничего не делает, потому что вы пытаетесь выполнить итерацию через не-массив. Изменение цикла for для этого приведет к запуску событий:

if (radioName === 'mandatory') radio.onclick = mandyEvent;
if (radioName === 'visible') radio.onclick = viEvent;
if (radioName === 'rename') radio.onclick = renoEvent;

http://jsfiddle.net/2wMCZ/15/

FYI - размещение <form> непосредственно внутри <tr> недействительно HTML.

  • 0
    Могу ли я поместить tr внутри формы?
  • 0
    Нет, tr может идти только внутри table , thead , tbody или tfoot . Я предлагаю вместо того, чтобы полагаться на формы, которые ничего не делают, вы идентифицируете соответствующие элементы по идентификатору. С другой стороны, можно заставить ваши функциональные возможности работать даже с недопустимым HTML.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню