Демо

Форма с последовательными действиями (несколько отправок форм)

Логика формы:

  • Если 3 и меньше, то показ "что можно улучшить" и стоп.
  • Если больше 3, то показ "что именно понравилось".
    • После сохранения что понравилось - показ какого то предложения и стоп.
Описание, как реализовать

Данная форма показывает процесс заполнения формы с промежуточными отправками данных на сервер и показом разных полей формы в зависимости от заполнения. 

Какая логика заложена в примере: 

Юзер выбирает оценку (act1), отправляет форму

Если если она меньше 3, то показывается показывается часть формы ("что можно улучшить") и потом конечная отправка формы (ac2).

Если больше трех, то показывается часть формы ("что понравилось") и отправка формы (ac3) - это показывает доп часть формы и какое то предложение + отправку формы (ac4). 

 

Таким образом можно реализовать форму с последовательным сохранением данных + показом различных наборов полей в зависимости от ввода пользователя. 

Как реализовано: 

  1. за счет кнопок отправки с type
  2. использование actions с add/removeClass hide на контейнерах. 

В GetItem все стандартно. 

Разметка формы: 

{form-title}
{form-subtitle}{form-subtitle}

<div class=" s1">
    {colwithlabel-s1}
   <a href="#" class="as-form-submit btn btn-primary" data-type="ac1">ОК ac1</a>
</div>
<div class="hide s11">
    {colwithlabel-s11}
    <a href="#" class="as-form-submit btn btn-success" data-type="ac2">ОК ac2</a>
</div>
<div class="hide s12">
    {colwithlabel-s12}
    <a href="#" class="as-form-submit  btn btn-warning" data-type="ac3">ОК ac3</a>
</div>
<div class="hide s121">
    {colwithlabel-s12}
    <a href="#" class="as-form-submit  btn btn-warning" data-type="ac4">ОК ac4</a>
</div>

Показан только первый контейнер, остальные скрыты. У каждого контейнера своя кнопка с data-type. 

SaveItem формы: 

CREATE   PROCEDURE [dbo].[fm_watch_stepactions_saveItem]
   @username nvarchar(256),
   @itemID int,
   @parameters ExtendedDictionaryParameter readonly
AS
BEGIN
    -- все поля что есть на форме 
  	declare @ps1 int
	select @ps1 = try_cast(Value2 as int) from @parameters where [key]='s1'
	declare @ps11 nvarchar(max)
	select @ps11 = Value2 from @parameters where [key]='s11'
	declare @ps12 nvarchar(max)
	select @ps12 = Value2 from @parameters where [key]='s12'
	declare @ps121 nvarchar(max)
	select @ps121 = Value2 from @parameters where [key]='s121'

  
  
    declare @buttonType nvarchar(max) = isnull((select value2 from @parameters where [Key] = 'buttonType'), '') 
    
    if(@buttonType='ac1') begin -- первое действие 
        if(@ps1>3) begin    
            -- SELECT 1
            select 1 Result, 'Перое действие выполнилось и показан блок при оценке выше 3' Msg, '' SuccessUrl, 0 HideFormAfterSubmit, '' RefreshContainer, 1 EnableSaveAlert, 
                '
                 [{	
                 removeClass: {selector:".s11", class:"hide"},
                 addClass: {selector:".s1", class:"hide"},
                     
                 }]
                ' actions
        end else begin 
            -- SELECT 1
            select 1 Result, 'Перое действие выполнилось и показан блок при оценке ниже 4' Msg, '' SuccessUrl, 0 HideFormAfterSubmit, '' RefreshContainer, 1 EnableSaveAlert, 
                '
                 [{	
                 removeClass: {selector:".s12", class:"hide"},
                 addClass: {selector:".s1", class:"hide"},
                     
                 }]
                ' actions
        end 
        return
    end 
    if(@buttonType='ac2') begin   -- второе действие 
      
         -- SELECT 1
        select 1 Result, 'Все сохранено (ac2) ' Msg, '' SuccessUrl, 0 HideFormAfterSubmit, '' RefreshContainer, 1 EnableSaveAlert, 
            '
             [{	
             addClass: {selector:".s11", class:"hide"},
             }]
            ' actions
        return
    end 
    
     if(@buttonType='ac3') begin   -- третье действие - еще показываем поля для связи. 
      
         -- SELECT 1
        select 1 Result, 'Показываем еще поля при варианте когда юзер написал текст и оценке >3 (ac3)' Msg, '' SuccessUrl, 0 HideFormAfterSubmit, '' RefreshContainer, 1 EnableSaveAlert, 
            '
             [{	
                 removeClass: {selector:".s121", class:"hide"},
                 addClass: {selector:".s12", class:"hide"},
             }]
            ' actions
        return
    end 
    
    if(@buttonType='ac4') begin   -- четвертое действие - сохраняем форму с контактом 
      
         -- SELECT 1
        select 1 Result, 'Все сохранено (ac4) ' Msg, '' SuccessUrl, 0 HideFormAfterSubmit, '' RefreshContainer, 1 EnableSaveAlert, 
            '
             [{	
             addClass: {selector:".s11", class:"hide"},
             }]
            ' actions
        return
    end 

    select 0 Result, 'Выбрано невалидное действие' Msg 
END

 

 

Насколько полезна эта возможность?

Последние обновления

Платформа Falcon Space

Это снижение стоимости владения

за счет меньшего количества людей для поддержки

Это быстрое внесение изменений

по ходу эксплуатации программы

Это современный интерфейс

полная адаптация под мобильные устройства

Бессрочная лицензия, бесплатные обновления ядра
Купить платформу Falcon Space
Сайт использует Cookie. Правила конфиденциальности OK