Добавление нескольких значений (адресов) к одному имени поля ввода [] в многоступенчатой ​​форме, когда другое поле (годы проживания) недопустимо (<5) - PullRequest
0 голосов
/ 24 марта 2020

Я построил многоэтапную форму из 14 «страниц» (шагов), на одном шаге (10) мы просим адрес, на шаге 12 мы спрашиваем количество лет в его текущем месте жительства. Если это число меньше 5 лет, я должен добавить еще один адрес, если общее количество лет составляет 5 или более лет. Таким образом, это может быть любое количество адресов, пока шаг 12 не будет равен 5 +.

Если честно, я подумал, как это сделать, но я действительно застрял.

Количество лет + месяцы с шага 12 просто сохраняются в форме до конца, когда они отправляются. Они не сохраняются как промежуточные итоги и массивы групп форм.

Вкладки / Шаги выглядят следующим образом

...
                                   <!-- Step 10 -->
                                    <div class="tab-pane" id="wizard-validation2-step10" role="tabpanel">
                                        <?php
                                        include_once 'assets/steps/step10.php';
                                        ?>
                                    </div>
                                    <!-- END Step 10 -->   
...
                                    <!-- Step 12 -->
                                    <div class="tab-pane" id="wizard-validation2-step12" role="tabpanel">
                                        <?php
                                        include_once 'assets/steps/step12.php';
                                        ?>
                                    </div>
                                    <!-- END Step 12 -->  
...

Включения PHP представляют собой просто поля формы, например:

<div class="form-group">
    <div class="input-group">
        <input type="number" placeholder="0" class="form-control input_number" id="durationyears" name="durationyears" min="2" required>
        <div class="input-group-append">
            <span class="input-group-text input_number">
                Years
            </span>
        </div>
    </div>
</div>

Я использую этот проект Github (спасибо VinceG): https://github.com/VinceG/twitter-bootstrap-wizard

Когда общее количество лет слишком мало, я могу go вернуться к шаг 10 с этим:

$('#rootwizard').bootstrapWizard('show', 'wizard-validation2-step10');

очистить текущие поля и каким-либо образом добавить новый адрес.

Я хотел бы знать, как я могу получить адрес из шага 10 как новый, дополнительный n-й адрес и число лет с шага 12 в качестве нового значения.

Это должно выглядеть примерно так, когда $ _POSTed:

address[0] = addressstreet
address[0] = numberofyears
address[1] = address
address[1] = numberofyears
total numberofyears = address[1][numberofyears] + address[1][numberofyears]

I'm надеясь, что кто-то может направить меня в правильном направлении. Уже поздно, был долгий день, поэтому я надеюсь, что это имело смысл. Оставайтесь в безопасности и будьте здоровы!

РЕДАКТИРОВАТЬ:

Теперь у меня есть более подробная информация, которая помогает прояснить ситуацию. Мне нужна эта структура

"Addresses": [{
    "Building": "The Granary",
    "BuildingNumber": "2",
    "SubBuildingName": "Flat 1",
    "Postcode": "FA11 0UT",
    "Street": "Street",
    "Town": "Megaton",
    "County": "Maryland",
    "TimeAtAddressYears": "13",
    "TimeAtAddressMonths": "10",
    "ResidentialStatus": "Living With Family"
}, {
    "Building": "101",
    "Postcode": "FA11 0UT",
    "Street": "Vault lane",
    "Town": "town",
    "County": "Maryland",
    "TimeAtAddressYears": "5",
    "TimeAtAddressMonths": null,
    "ResidentialStatus": "Tenant - Private"
}],

TimeAtAddressYears должно быть не менее 5 для всех адресов вместе взятых. Может быть 1 адрес, может быть 5 (может быть больше, если мы начнем использовать месяцы в качестве ведущего времени, поэтому 60 месяцев, когда 1 год будет 12 месяцев, очевидно.

Итак, шаг, на котором я запрашиваю TimeAtAddress Шаг 12. Мне нужно проверить с помощью jQuery, есть ли в этом итоговом значении> 5, прежде чем перейти к следующему шагу, или go вернуться к шагу 10.

Я думаю о создании / добавив скрытые поля для этого и записав новый адрес в эти скрытые поля, что-то вроде этого образца поля ввода формы для каждого из необходимых значений. «n» - это число $ i и будет увеличиваться после каждой проверки:

<input type="text" name="Addresses_Street" id="line1">
^ will save to the hidden field below for later processing    
<input type="hidden" name="Addresses[n][Street]" id="Addresses_n_Street">

Итак, теперь я на шаг впереди, все еще нужно знать это сейчас:

  • проверить суммарные значения

Адреса [ n] [mc_residential_durationYears] будет> 5

  • go вернуться к шагу 10 при необходимости, где я могу ДОБАВИТЬ В новые поля адреса
$i++ (=n)
<input type="text" name="Addresses_Street" id="line1">
will get new address and save to the hidden field below for later processing    
<input type="hidden" name="Addresses[n][Street]" id="Addresses_n_Street">

Я вижу это как решение, просто нужно все это написать или т. Это хороший способ go или есть лучший (правильный) способ go?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...