Перейти к содержимому


Условие в поле с множественным выбором


Сообщений в теме: 9

#1 TelecomMedia

    Активный участник

  • Пользователи
  • PipPipPip
  • 378 сообщений

Отправлено 17 Апрель 2014 - 10:46

Вычисление: если поле пустое, не давать выполнить действие.

if (document.getElementById("value10471").value=="") { alert ("Поле 'Имя ЛПР' не заполнено!"); return false; }
else if (document.getElementById("value10431").value=="") { alert ("Заполните E-mail ЛПР!"); return false; }
else if (document.getElementById("value9791").value=="") { alert ("Укажите причину переноса в архив"); return false; }
else return true;

value9791 - поле с множественным выбором.

Последнее условие не срабатывает (как раз таки наверное из за множ. выбора).

Подскажите,пожалуйста, как нужно правильно сформулировать запрос в таком случае?


Второй вопрос:

Подскажите, как можно запретить выбор определенного значения поля при невыполнении условий (аналогично с доп. действием)?

Т.е. условия следующие:


if (document.getElementById("value10471").value=="") { alert ("Поле 'Имя ЛПР' не заполнено!"); return false; }
else if (document.getElementById("value10431").value=="") { alert ("Заполните E-mail ЛПР!"); return false; }
И ЕСЛИ ЭТИ ПОЛЯ НЕ ЗАПОЛНЕНЫ, ТО НЕЛЬЗЯ ВЫБРАТЬ "Контакт с ЛПР" = "Да.

Спасибо.

#2 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 761 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 17 Апрель 2014 - 14:28

Это где у вас такое вычисление? Во-первых, по коду это не вычисление, а JS-код. Но для JS в поле оно странно выглядит.

#3 TelecomMedia

    Активный участник

  • Пользователи
  • PipPipPip
  • 378 сообщений

Отправлено 17 Апрель 2014 - 16:30

Извините, да, это JS.

Просмотр сообщенияCbCoder (17 Апрель 2014 - 14:28) писал:

Но для JS в поле оно странно выглядит.
Что странного? Все работает, только не в случае когда поле типа список со множеств. выбором.

#4 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 761 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 18 Апрель 2014 - 09:43

Странно то, что вы не пишете сразу где у вас размещен этот код, по умолчанию обычно имеется ввиду что это код в настройках поля, поэтому и выглядит странно (для кода в поле).

По сути вопроса: обращение к полю с множественным выбором таким способом не работает, потому что там не одно поле, а несколько чекбоксов. Посмотрите исходный html-код страницы и поймете как нужно обращаться к элементам списка.

По второму вопросу: запретить выбор нельзя, можно только заменить некорректный выбор на корректный, например пустое значение или "Нет".

#5 TelecomMedia

    Активный участник

  • Пользователи
  • PipPipPip
  • 378 сообщений

Отправлено 19 Апрель 2014 - 10:14

По первому вопросу:

Посмотрел исходный код.
Заметил разницу, что полю типа список присваивается id="valueXXXX",
а полю со множ. выбором каждому значению чекбокса id="valueХХХХ['Номер не отвечает / Организации нет']"

Т.е. свой JS заменил на следующий:

if (document.getElementById("value9791['Номер не отвечает / Организации нет']").value=="") { alert ("Укажите причину переноса в архив"); return false; }
else return true;

Для примера подставил только одно значение из списка. По идее, если бы в поле не было выбрано значения "Номер не отвечает / Организации нет", то высветилось бы предупреждение. Но код не сработал. Подскажите, где ошибка,

Спасибо.

#6 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 761 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 19 Апрель 2014 - 14:44

У чекбоксов нужно проверять не value (которое у них изначально задано и не меняется пользователем), а параметр checked (т.е. выбран он или нет). У выбранного чекбокса он true, у невыбранного - false

if (document.getElementById("value9791['Номер не отвечает / Организации нет']").checked==false)  { alert ("Укажите причину переноса в архив"); return false; } 


#7 TelecomMedia

    Активный участник

  • Пользователи
  • PipPipPip
  • 378 сообщений

Отправлено 21 Апрель 2014 - 09:33

Спасибо, попробую.

Подскажите, а как скрыть группу? Ведь у нее нет id

#8 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 761 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 21 Апрель 2014 - 10:31

Группу полей? Есть все у них, хотя там и несколько сложнее. Поищите в документации и на форуме, я сам уже не помню точно как делается.

#9 TelecomMedia

    Активный участник

  • Пользователи
  • PipPipPip
  • 378 сообщений

Отправлено 22 Апрель 2014 - 09:10


Подскажите где ошибка.

12801 - поле с чекбоксом "Да"
12811 - поле, которое нужно открыть при условии что в 12801 выбрано "Да"


JS в 12801:
function onchange_{$one_field.id}()
{
display_field(12811, document.getElementById("value12801['Да']").checked==true);
}
addHandler(document.getElementById('value{$one_field.id}'), 'onchange', onchange_{$one_field.id});



JS в 12811:
display_field({$one_field.id}, document.getElementById("value12801['Да']").checked==true);

Сообщение отредактировал fabrika-r: 22 Апрель 2014 - 09:12


#10 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 761 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 22 Апрель 2014 - 09:56

На первый взгляд не вижу ошибок, нужна отладка. Проверьте через консоль в браузере, не выдает ли JS ошибок. Рекомендую для отладки использовать FireBug в Firefox или аналогичную панель в Chrome.





Количество пользователей, читающих эту тему: 3

0 пользователей, 3 гостей, 0 анонимных