Попытка заставить вложенные вопросы отображаться динамически… C # ASP.Net Сначала база данных,

#javascript #c# #asp.net #model-view-controller

#javascript #c# #asp.net #модель-представление-контроллер

Вопрос:

Идея сделать элементы видимыми или невидимыми: Итак … как цикл работает прямо сейчас, так это для каждой категории, он перебирает каждый вопрос в каждой категории. Идея такова: на каждый вопрос можно ответить «да» или «нет», а затем на каждый вопрос с ответом «да» может быть добавлено до 5 дат. Что я хочу сделать:

 -If yes, first date appears:
-If the first date is answered, then a second question appears, and so on.
  

Эти вопросы хранятся на сервере sql следующим образом:

Я хочу, чтобы только внутренний цикл имел эту возможность быть видимым или невидимым.. Моя мысль состоит в том, чтобы выполнить вложенный цикл и проверить проверку каждого элемента.

введите описание изображения здесь

//Псевдокод

 //For each first question which has 5 sub questions that are all set to hidden:
var questioncount = (count of the first questions)
for(int i = 0; i<questioncount; i  ){
    // set first variable to hold the first questions object.
    var element(‘#questionElement’   i);
    // set firstElement to selected answer
    var isAnsweredYes = firstElement.(‘Yes’);
    for int j = 0; i<subQuestionCount; j  )
    if (isAnsweredYes == True){
        // jQuery selector to get an element
        var query = $('#element'   j);
        // check if element is Visible
        var isVisible = query.is(':visible');
        if (isVisible === true) {
            // element is Visible
            // do nothing
        } else {
            // element is Hidden
        query.show();
    }
    else
        {
            //do nothing
        }
    }
}
  

Кажется ли моя логика передовой? или кто-нибудь может посоветовать мне лучший способ?

введите описание изображения здесь

Ответ №1:

Я бы использовал кнопку с надписью «Добавить еще одну дату», которая отображается под полем последней даты, как только появляется хотя бы одна. Таким образом, вам не придется выбирать определенное число (например, 5) в качестве максимального, плюс я думаю, что это довольно интуитивный способ расширения формы. При каждом нажатии кнопки создавайте новые элементы управления вводом; будь то на javascript или на стороне сервера, это не имеет реального значения.

Комментарии:

1. Это хороший ответ… Я попробую это. итак, тогда, я думаю, я бы использовал событие on change для вопроса «да» или «нет»? Как бы я выполнил событие check change внутри подобного цикла, чтобы вызвать первое отображение?

2. Да, найдите onChange в раскрывающемся списке «Да / нет». Если для параметра установлено значение «нет», скройте весь раздел, содержащий ввод даты. Если для параметра установлено значение yes, удалите все существующие входные данные о дате (если ранее было переключено значение yes / no), установите «dateCount = 1» и создайте циклические входные данные о дате от 0 до «dateCount». Я не уверен в вашем внешнем цикле и в чем его назначение. Вы, вероятно, не хотите добавлять прослушиватели событий в цикл в любом случае, это должно быть добавлено до или после, чтобы это произошло только один раз, иначе вы получите нечетные результаты.