Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 15.06.2015, 10:38
Кандидат Javascript-наук
Отправить личное сообщение для dpts Посмотреть профиль Найти все сообщения от dpts
 
Регистрация: 12.05.2015
Сообщений: 111

Сообщение от Sigizmund2012 Посмотреть сообщение
Это не вопрос предпочтений или конкретно вашей формы. Так должно быть по стандарту, данные отправляются на сервер в виде name&value. Как серверный скрипт корректно вашу форму обработает, если у вас name одинаковый? http://htmlbook.ru/html/input/name
Ну вообще-то серверный скрипт (asp+vbscript) спокойно считает количество переданных ему detail-ов и может обратиться к каждому detail, как к элементу массива (тоже самое с material-ами).
По-этому мне и надо, чтобы detail-ов было столькоже, сколько и material-ов.
Ответить с цитированием
  #12 (permalink)  
Старый 15.06.2015, 10:46
Аватар для Sigizmund2012
Профессор
Отправить личное сообщение для Sigizmund2012 Посмотреть профиль Найти все сообщения от Sigizmund2012
 
Регистрация: 16.07.2014
Сообщений: 267

Сообщение от dpts
если чекбокс отключаешь, уменьшается количество detail
Вот тут ничего конкретного не могу сказать, возможно если чекбокс не отмечен, его значение вообще на сервер не отправляется.
Ответить с цитированием
  #13 (permalink)  
Старый 15.06.2015, 10:50
Кандидат Javascript-наук
Отправить личное сообщение для dpts Посмотреть профиль Найти все сообщения от dpts
 
Регистрация: 12.05.2015
Сообщений: 111

Сообщение от Sigizmund2012 Посмотреть сообщение
Вот тут ничего конкретного не могу сказать, возможно если чекбокс не отмечен, его значение вообще на сервер не отправляется.
Похоже на то.

вот тогда и вопрос, как если чекбокс отключен, то соответствующий ему material тоже не отправлять на сервер, чтобы на червер приходили одинаковые количества detail и material&
Ответить с цитированием
  #14 (permalink)  
Старый 15.06.2015, 10:55
Кандидат Javascript-наук
Отправить личное сообщение для dpts Посмотреть профиль Найти все сообщения от dpts
 
Регистрация: 12.05.2015
Сообщений: 111

Еще вариант как передавать одинаковое количество
Еще, как вариант выхода
к каждому checkbox приделать input type="hidden" value="..."

и в зависимости от состояния соответствующего чекбокса менять value у hidden и на сервере обрабатывать массив hidden-ов.

Вотпрос, как менять value у hidden-ов?
Ответить с цитированием
  #15 (permalink)  
Старый 15.06.2015, 11:14
Аватар для Sigizmund2012
Профессор
Отправить личное сообщение для Sigizmund2012 Посмотреть профиль Найти все сообщения от Sigizmund2012
 
Регистрация: 16.07.2014
Сообщений: 267

Сообщение от dpts
Вотпрос, как менять value у hidden-ов?
Так же как и у не скрытых, например отсеять по querySelectorAll('input[type="hidden"]') и в цикле изменить checkboxes[i].value = 'true';

Последний раз редактировалось Sigizmund2012, 15.06.2015 в 11:19.
Ответить с цитированием
  #16 (permalink)  
Старый 15.06.2015, 11:22
Аватар для Sigizmund2012
Профессор
Отправить личное сообщение для Sigizmund2012 Посмотреть профиль Найти все сообщения от Sigizmund2012
 
Регистрация: 16.07.2014
Сообщений: 267

http://www.askdev.ru/question/3943/%...cked-checkbox/
Ответить с цитированием
  #17 (permalink)  
Старый 15.06.2015, 12:02
Кандидат Javascript-наук
Отправить личное сообщение для dpts Посмотреть профиль Найти все сообщения от dpts
 
Регистрация: 12.05.2015
Сообщений: 111

Сообщение от Sigizmund2012 Посмотреть сообщение
http://www.askdev.ru/question/3943/%...cked-checkbox/
Если чекбокс отмечен, - отправляются 2 значения, и из чекбокса и из хиддена.

Мне предложили вроде рабочее решение, выглядит так:
var details = zakaz.detail;
for (var i = 0; i < details.length; i++) {
    details[i].addEventListener('change', function () {
        var td = closest(this, function (el) {
            return el.tagName.toLowerCase() == 'td';
        });
        var material = td.nextElementSibling.querySelector('[name=material]');
        material.disabled = !this.checked;
    }, false);
}

function closest(el, fn) {
    while (el) {
        if (fn(el)) return el;
        el = el.parentNode;
    }
}

Если отключается чекбокс, отключается и material. вроде все хорошо, все работает (чекбокс - не передается, материал - тоже не передается). Но сразу не подумал.
Обработчику же должен передаваться массив из detail-ов, detailmod-ов, material-ов.
Поэтому пришлось к левому и правому рукавам добавить еще input type="hidden" name="detailmod" value="0".

Как надо дописать приведенный JS, чтобы он еще и detailmod не передавал?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск