2013-05-24 13 views
1

Я пытался решить эту проблему в течение нескольких дней .. Мне нужно сделать онлайн-опрос, форма загружается динамически в зависимости от некоторых предыдущих вариантов выбора пользователем. означает, что я не могу использовать атрибуты «имя» или «идентификатор» входов, потому что они не всегда одинаковы. Я использую плагин проверки Jquery, чтобы сделать все необходимые данные, и он работает нормально. Но моя проблема заключается в следующем:Поле зависит от ответа другого поля в форме опроса

  • Некоторые вопросы зависят от ответа предыдущего вопроса, а это значит, что не только на предыдущий вопрос должен быть дан ответ, но и конкретный ответ. (Пример: «вам нравятся фрукты?», Если ответ «Да», то покажите другой вопрос «какой из этих плодов вы обычно едите?» И требуйте, если ответ «Нет» не показывает вопрос на всех.

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

Это было бы очень просто, если бы я имел статическую форму, но это не так.

Пожалуйста, помогите!

+0

Вы используете PHP вообще для него? – user2406160

+0

yes Я использую Ajax для загрузки формы, а затем PHP для заполнения формы динамически соответствующими полями –

+0

вы рассмотрели использование $ _POST, если ваш первый вопрос: «Вам нравятся яблоки?» убедитесь, что кнопка «Да» имеет имя «Да», если они нажимают «Нет», и вы даете кнопке имя «Нет», которое вы можете сделать, если ($ _ POST ['Нет']) {// показать один вопрос} else { // show another} – user2406160

ответ

0

Я использую атрибут html5 data- для некоторых пользовательских атрибутов в архив это:

HTML:

<input type="checkbox" data-dependid="test" /> 
<input type="text" data-dependid="test2" data-dependedid="test" data-dependedvalue="true" data-dependedtype="disabled" disabled="disabled" /> 
<input type="text" data-dependedid="test2" data-dependedvalue="input" data-dependedtype="disabled" disabled="disabled" /> 

JQuery:

$(function() { 
    $("[data-dependid]").die().live("change keyup", function() { 
     var that = this; 
     var depends = $("[data-dependedid='" + $(that).attr("data-dependid") + "']"); 
     depends.each(function (i, depend) { 
      var isSame = false; 
      if (($(that).is(":checked") + "" == $(depend).attr("data-dependedvalue")) || ($(that).val() == $(depend).attr("data-dependedvalue"))) { 
       isSame = true; 
      } 
      $(depend).attr($(depend).attr("data-dependedtype"), !isSame); //works for checked and disabled 
     }); 
    }); 
}); 

Это сделало первый текстовое поле зависит от флажка.

Второй текстовый блок зависит от значения (ввода) первого.

Смотреть это fiddle

Чтобы добавить вариант отображения добавить это в Еогеасп:

var isSame = false; 
if (($(that).is(":checked") + "" == $(depend).attr("data-dependedvalue")) || ($(that).val() == $(depend).attr("data-dependedvalue"))) { 
    isSame = true; 
} 
if ($(depend).attr("data-dependendtype") == "display") { 
    if (!isSame) 
     $(depend).fadeOut(); 
    else 
     $(depend).fadeIn(); 
} 
else { 
    $(depend).attr($(depend).attr("data-dependedtype"), !isSame); 
}