Задать вопрос
MOCTPECT
@MOCTPECT

Как сделать валидацию очень сложной формы?

Пытаюсь сделать обязательными поля: country и birthday вот в такой вот форме, где даже submit находится за формой (внесение его внутрь не помогает). Перепробовал все способы которые нарыл. Ничего не помогает.

<form class="setting-general-form form-horizontal" method="post">
    <label class="tag_field">
        <input name="first_name" type="text" placeholder=" " value="<?php echo $wo[
            " user "
        ]["first_name "]; ?>">
        <span><?php echo $wo["lang"]["first_name"]; ?></span>
    </label>
    <label class="tag_field">
        <input name="last_name" type="text" placeholder=" " value="<?php echo $wo[
            " user "
        ]["last_name "]; ?>">
        <span><?php echo $wo["lang"]["last_name"]; ?></span>
    </label>
    <label class="tag_field">
        <select id="country" name="country">
            <?php foreach ($wo[ "countries_name"] as $country_ids=> $country) { $country_id = $wo["user"]["country_id"]; $selected_contry = $country_ids == $country_id ? " selected" : ""; ?>
            <option value="<?php echo $country_ids; ?>" <?php echo $selected_contry; ?> >
                <?php echo $country; ?>
            </option>
            <?php } ?>
        </select>
        <span><?php echo $wo["lang"]["country"]; ?></span>
    </label>
    <?php $cutoff=1 930; $now=d ate( "Y"); $birthday="" ; if ($wo[ "user"][ "birthday"] !="0000-00-00" ) { $birthday=e xplode( "-", $wo[ "user"][ "birthday"]); } ?>
    <label class="tag_field">
        <input id="usr_birthday" name="birthday" type="text" placeholder=" ">
        <span><?php echo $wo["lang"]["birthday"]; ?></span>
        <p class="time">Не отображается в вашей анкете, но требует заполнения, если вы хотите участвовать в поиске по анкетам.</p>
    </label>
    <input type="hidden" name="user_id" value="<?php echo $wo[" user "][
           "user_id "
       ]; ?>">
    <input type="hidden" name="hash_id" value="<?php echo Wo_CreateSession(); ?>">
</form>
<div class="clear"></div>
</div>
<div class="valign wow_usr_steps_cont">
    <small class="skip-step pointer" onclick="Wo_SkipStep('start_up_info');"><?php echo $wo[
          "lang"
      ]["start_up_skip"]; ?></small>
    <button type="submit" class="btn con-button btn-main btn-mat disable_btn" onclick="Wo_SubmitInfoForm();">
        <?php echo $wo[ "lang" ][ "start_up_continue"]; ?>
    </button>
  • Вопрос задан
  • 248 просмотров
Подписаться 1 Простой 13 комментариев
Помогут разобраться в теме Все курсы
  • Skillbox
    JavaScript
    3 месяца
    Далее
  • Яндекс Практикум
    Фронтенд-разработчик расширенный
    13 месяцев
    Далее
  • Академия Eduson
    Fullstack-разработчик на JavaScript
    11 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 2
ThunderCat
@ThunderCat Куратор тега JavaScript
{PHP, MySql, HTML, JS, CSS} developer
Пытаюсь сделать обязательными поля: country и birthday
Для этого существуtт атрибут required. Естественно это не отменяет проверки полей на бэкенде, но это немного другой вопрос.

где даже submit находится за формой (внесение его внутрь не помогает).
Как вообще идея вынести из формы кнопку субмита пришла в голову? А главное - зачем?

Перепробовал все способы которые нарыл. Ничего не помогает.
Плохо рыли. Это вообще дефолтное поведение формы, не требующее никаких скриптов. Форма не отправиться пока не будут заполнены указанные как required поля. Если нужны какие-либо еще манипуляции с формой на js, то делается по другому. Форма не трогается, а в кнопку никакие онклики не лепятся. На объект формы вешается событие онсубмит, после чего ПРОВАЛИДИРОВАННАЯ форма вызовет это событие, и дальше уже можно работать с данными формы, в том числе и отправить ее аяксом на бэкенд если необходимо.
Ответ написан
1. Нужным полям присвоить атрибут required.
2. Кнопку submit нужно связать с формой.
3. На форму подвесить обработчик addEventListener submit
4. Внутри обработчика сделать полную проверку на заполнение
5. отправить форму на сервер.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы