Условия для подвопросов

More
2 years 6 months ago #120564 by ada1
ada1 created the topic: Условия для подвопросов
Не могу реализовать следующую задачу:

К примеру, есть 2 вопроса:

1. В каком Вы классе? (ответы: 1, 2, 3 класс)
2. Выбирите Ваш любимый предмет (ответы: математика, русский, история и т.д.)

Требуется, чтобы при выборе определенного класса, во втором вопросе среди вариантов ответов отображались только те предметы, которые относятка к этому классу. Выглядит это так:

1. В каком Вы классе?
1 класс
2 класс
3 класс

2. Выбирите Ваш любимый предмет
Математика
История
Русский

Please Log in to join the conversation.

More
2 years 6 months ago #120592 by vipgroup
vipgroup replied the topic: Условия для подвопросов
Я смотрю, коллеги из английского форума Вам уже ответили. У вас правда очень простое решение.
The following user(s) said Thank You: ada1

Please Log in to join the conversation.

More
2 years 6 months ago - 2 years 6 months ago #120626 by ada1
ada1 replied the topic: Условия для подвопросов
Спасибо, vipgroup.

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

Опишу подробнее. Мне требуется создать анкету для оценки качества образовательного процесса на кафедре. В моей анкете будут следующие вопросы:

1. На каком семестре Вы обучаетесь?

2. Впишите ФИО преподавателя дисциплин (в вариантах ответов перечисляются дисциплины, которые преподают в отмеченном семестре обучения)

Далее идут вопросы, которые представляют собой оценку (рейтинг) по каждой дисциплине (в вопросе №2 студентами были указаны ФИО, таким образом оцениваются преподаватели)

3. Излагает материал ясно, доступно
Ответы: список предметов (выбирается по каждому предмету оценка от 1 до 5)
4. Требовательность
Ответы: список предметов (выбирается по каждому предмету оценка от 1 до 5)
5. Последовательность в изложении материала
Ответы: список предметов (выбирается по каждому предмету оценка от 1 до 5)

Ну и так далее. Всего таких вопросов 7. И после идут вопросы также по тому же принципу (по предметам) только там измерения другие, но в целом такие же вопросы как 3-7.

Требуется чтобы при выборе студентом определенного семестра подгружались в ответы последующих вопросов только те предметы, которые относятся к выбранному семестру обучения.

Я думал сделать так: создать скрытый вопрос с множественным выбором и с помощью js отмечать в зависимости от выбранного семестра предметы обучения. Далее остальные вопросы будут отображаться по фильтру массива (array filter). Но как только я добавил >5 вопросов со списком всех дисциплин (там их более 50 штук), графический интерфейс лайма поехал.

Может быть я неправильно рассуждаю, есть ли способ попроще. Также было предложено просто разделить эти вопросы на подвопросы и с помощью логики их отображать, но в таком случае у меня получится 10*6=60 подвопросов. И если потребуется добавить предмет в какой-либо семестр обучения, будет очень сложно.

Еще одно небольшое условие: выгруженная база данных должна иметь нормальную структуру, для последующего анализа.

Прошу помочь мне :( Если возможно, оставьте свои контакты для более оперативного общения.
Last Edit: 2 years 6 months ago by ada1.

Please Log in to join the conversation.

More
2 years 6 months ago #120718 by vipgroup
vipgroup replied the topic: Условия для подвопросов
У нас был схожий случай в нашем университете, когда студентов просили оценить работу преподавателей. Мы в итоге решили сделать большую анкету с системой фильтров, если студент выбирает например 1 курс (вопрос q1), ему показываются список препадавателей для первого курса (вопрос q2_1) и потом список предметов например выбранного 5 преподавателя (вопрос q3_1_5). Структура опроса вышла вопросов на 150, хотя студенту задавалось вопросов 5 или 6, но на тот момент это показалось наиболее простым и надежным решением. С фильтрами для подвопросов возиться не хотелось, тем более с js.

Связаться со мной можно по эмейлу (This email address is being protected from spambots. You need JavaScript enabled to view it.), но отвечу я не быстрее, чем тут.

Андрей

Please Log in to join the conversation.

More
2 years 6 months ago #120723 by ada1
ada1 replied the topic: Условия для подвопросов
Спасибо, Андрей.

Я все же использовал js как посоветовал tpartner. Вроде получилось, но в 100% работоспособности программы не уверен :cheer:

Please Log in to join the conversation.

More
2 years 6 months ago #120727 by vipgroup
vipgroup replied the topic: Условия для подвопросов
ada1, если не сложно, напишите решение c js.
У Лайма такой большой функционал, что невозможно в голове держать все решения на все вопросы.

Спасибо, Андрей

Please Log in to join the conversation.

More
2 years 6 months ago #120742 by ada1
ada1 replied the topic: Условия для подвопросов
<script type="text/javascript" charset="utf-8">	
	$(document).ready(function() {
 
		// Identify the questions and IDs
		var A1ID = {QID};
		var A1 = $('#question'+A1ID);
		var B0 = A1.nextAll('.multiple-opt:eq(0)');
		var B0ID = B0.attr('id').replace(/question/, '');
 
		// Массив предметов
		var sem1=[1,2,3,4,5,6,7,8,9,10];
		var sem2=[11,4,12,5,13,14,15,7,16,2,17];
		var sem3=[18,19,20,4,5,21,6,22,23,24];
		var sem4=[19,25,21,26,27,28,29,4,5,13,17];
		var sem5=[30,31,32,33,6,34,35,36,23,37];
		var sem6=[38,39,40,41,42,43,44,45,26,17,27];
		var sem7=[46,47,48,33,49,4,50,51,52,53,54];
		var sem8=[55,56,57,47,21,2,58];
		var sem9=[59,60,61,62,63,64,65];
 
		// Hide B0
		B0.hide();	
 
		// Listeners on the A1 checkboxes
		$('input.radio', A1).change(function(e) {
 
			var A1Radio = $(this);
 
			switch(A1Radio.attr('value')){
				case '1':
					subjects=sem1;
					console.log(subjects);
					break;
				case '2':
					subjects=sem2;
					console.log(subjects);
					break;
				case '3':
					subjects=sem3;
					console.log(subjects);
					break;
				case '4':
					subjects=sem4;
					console.log(subjects);
					break;
				case '5':
					subjects=sem5;
					console.log(subjects);
					break;
				case '6':
					subjects=sem6;
					console.log(subjects);
					break;
				case '7':
					subjects=sem7;
					console.log(subjects);
					break;
				case '8':
					subjects=sem8;
					console.log(subjects);
					break;
				case '9':
					subjects=sem9;
					console.log(subjects);
					break;
			}
			$('input.checkbox[id*="X'+B0ID+'"]').prop('checked', false);
 
			/* $('input.checkbox[id*="X'+B0ID+'"]').each(function(){
				$(this).prop('checked', false);
				checkconditions(this.value, this.name, this.type);
			}); */
 
			$(subjects).each(function(i){
				var sqID='answer'+{SID}+'X'+{GID}+'X'+B0ID+subjects[i];
				$('input.checkbox[id="'+sqID+'"]', B0).prop('checked', $(A1Radio).prop('checked'));
				//var o=document.getElementById(sqID);
				//checkconditions(o.value, o.name, o.type);
			});
		});
	});
</script>

Не особо владею js, к примеру присваивать массивы предметов можно как-нибудь проще, а не как в моем случае через switch, но мне хватает этого (и сложные массивы было лень делать :) ).
Работает если только скрытый вопрос B0 (список всех предметов) находится в отличной от других вопросов группе (правда можно использовать закомментированные строки, но тогда из-за цикла немного виснет опрос при выборе семестра).

Please Log in to join the conversation.

More
2 years 6 months ago #120743 by ada1
ada1 replied the topic: Условия для подвопросов
Вообще лучше здесь посмотреть: www.limesurvey.org/en/forum/can-i-do-thi...ious-question#119674

Please Log in to join the conversation.

More
2 years 6 months ago #120769 by vipgroup
vipgroup replied the topic: Условия для подвопросов
Спасибо, надо будет потом попробовать разобраться в этой теме.

Please Log in to join the conversation.

Moderators: vipgroup

Start now!

Just create your account and start using Limesurvey today.

Register now
Join our Newsletter!