2015-12-11 19 views
1

Выполнение формы с деформированием и изменение статуса страницы в зависимости от выбора, сделанного пользователем. Пример. если он выберет вариант 1 из selectwidget, покажите ему один набор полей, если случай другого выбора - другой. Как это сделать?Динамические формы с деформированием

+0

что вы пробовали? – utkbansal

+0

Пожалуйста, добавьте код на вопрос, мы получим повесить то, что происходит –

ответ

5

Вы можете использовать jquery и выбрать атрибут «name». Кроме того, вы можете использовать функцию jQuery «parent()», чтобы получить контейнер ввода, который вам интересен при отображении/скрытии.

Например, в вашей схеме делать что-то вроде:

# This is the "<select>" 
choices = (('yes','Yes'), 
      ('no', 'No')) 
bar = colander.SchemaNode(colander.String(), 
          widget=deform.widget.SelectWidget(values=choices)) 

# This is the input that should appear only when the "yes" value is selected 
foo = colander.SchemaNode(colander.String()) 

Затем, в шаблоне, добавьте somethig как:

<script> 
$(document).ready(function() { 

// ensure that the "foo" input starts hidden 
var target = $("input[name=foo]").parent().parent(); 
target.hide(); 

$("select[name=bar]").on('change', function(){ 
    var valueSelected = this.value; 
    if (valueSelected == "yes") { 
     target.show(); 
    } else { 
     target.hide(); 
    } 
}); 



}); 
</script> 
+0

Очень приятное решение. Легкий и умный. – karantan

+0

Также для более полного решения вы можете использовать что-то вроде https://github.com/miohtama/jquery-interdependencies –

 Смежные вопросы

  • Нет связанных вопросов^_^