Проверка обязательного поля не работает codeigniter

у меня есть следующий код:

  <!-- SELECT SERVICE AND PROVIDER -->
            <div id = "wizard-frame-1" class = "wizard-frame">
                <div class = "frame-container">             
                    <h3 class = "frame-title"><?= lang('step_one_title') ?></h3>
            <div class = "form-group">
                      <label for = "select-service">
                                <strong>Enter Location:*</strong>
                            </label>
                                <input type = "text" id = "location-name" class = "required form-control" maxlength = "120" required/>  
                    </div> 
                    <div class = "frame-content">
                        <div class = "form-group">
                            <label for = "select-service">
                                <strong><?= lang('select_service') ?></strong>
                            </label>
                            <select id = "select-service" class = "col-xs-12 col-sm-4 form-control">
                            </select>
                        </div>
                        <div class = "form-group" id = "selectprovider">
                            <label for = "select-provider">
                                <strong><?= lang('select_provider') ?></strong>
                            </label>

                            <select id = "select-provider" class = "col-xs-12 col-sm-4 form-control"></select>
                        </div>

                        <div id = "service-description" style = "display:none;"></div>
                    </div>
                </div>

                <div class = "command-buttons">
                    <button type = "button" id = "button-next-1" class = "btn button-next btn-primary"
                            data-step_index = "1">
                        <?= lang('next') ?>
                        <span class = "glyphicon glyphicon-forward"></span>
                    </button>
                </div>
            </div>

и для моей первой части, где пользователь должен ввести свое местоположение, я сделал это обязательным, но когда я нажимаю следующую кнопку, он все равно позволяет мне перейти к следующему этапу, даже если я сделал это обязательным. Может ли кто-нибудь помочь мне, как решить эту ошибку?

Опубликуйте код контроллера, который вы вызываете для проверки полей.

Ropali Munshi 30.01.2019 10:22

@RopAliMunshi Я использую Easy!appointments, поэтому я на самом деле не знаю, где находятся поля проверки

Mohammed Ismail 30.01.2019 10:34
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
2
550
4

Ответы 4

Вы ошиблись, отправив кнопку. Поставить кнопку типа submit вместо кнопки

<button type = "submit" id = "button-next-1" class = "btn button-next btn-primary" data-step_index = "1">
    <?= lang('next') ?>
    <span class = "glyphicon glyphicon-forward"></span>
</button>

Примечание: Если вы не хотите использовать submit на этом шаге, вам необходимо подтвердить свое поле через javascript или после завершения всех шагов с помощью php.

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

Если вы хотите проверить его без формы, вы можете сделать это с помощью javascript следующим образом:

document.getElementById('your_input_id').validity.valid

https://stackoverflow.com/a/7741277/10429036

Вам нужно добавить тег формы до того, как начнется ваш код, а затем закрыть тег формы в конце вашего кода.

Атрибут required в HTML проверяется на стороне клиента, а не на стороне сервера. Это будет работать, только если ваша кнопка имеет атрибут type = "submit" и браузер его поддерживает (большинство современных браузеров поддерживают).

Поскольку вы конкретно упоминаете Codeigniter, я предполагаю, что ваша проблема заключается не только в том, что форма отправляется, но и в том, что ваш контроллер обрабатывает ввод формы. Чтобы обеспечить требуемую проверку (что является хорошей практикой: вы всегда должны применять проверки как на стороне клиента, так и на стороне сервера), вам нужно использовать помощник формы CI и определить соответствующие правила form_validation следующим образом:

$this->form_validation->set_rules('post_field', 'description', 'required');

а затем запустите процедуру проверки формы, выполнив следующие действия:

if ($this->form_validation->run() == false)
{
    // here you'd do something if the validation fails, like redirecting back to the form, show an error message or whatever
}

else
{
    // here you'd do something if the validation passes like actually processing the form input
}

Другие вопросы по теме