Добрый вечер! <br/> <br/> Я пытаюсь сделать поля "страна" (country) и "дата рождения" (birthday) обязательными для заполнения в форме, где кнопка отправки (submit) расположена вне формы. Перепробовал множество методов, но ни один из них не сработал. <br/> <br/> <pre><code><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 cla
Чтобы осуществить валидацию полей "страна" (country) и "дата рождения" (birthday) в вашей форме, необходимо сделать несколько вещей. В данном случае, поскольку кнопка отправки (submit) расположена вне формы, вам нужно будет использовать JavaScript для проверки заполненности этих полей перед отправкой формы.
Вот шаги, которые нужно предпринять:
1. **Добавьте класс или атрибуты для обязательных полей**: Убедитесь, что ваши поля имеют соответствующие классы или атрибуты, чтобы вы могли легко к ним обращаться в JavaScript.
2. **Создайте обработчик события для кнопки отправки**: Обработайте событие клика на кнопке, чтобы проверить значения полей.
3. **Проверьте заполнение обязательных полей**: Если обязательные поля не заполнены, предотвратите отправку формы и отобразите сообщение об ошибке.
4. **Отправьте форму**: Если все проверки прошли успешно, отправьте форму.
Пример кода JavaScript для выполнения данных шагов:
```javascript
document.addEventListener("DOMContentLoaded", function () {
const submitButton = document.getElementById("submit-button"); // Предположим, что у вас есть кнопка с id="submit-button"
const countrySelect = document.getElementById("country");
const birthdayInput = document.querySelector('input[name="birthday"]'); // Предположим, что у вас есть поле ввода для даты
submitButton.addEventListener("click", function (event) {
let valid = true;
// Убираем старые сообщения об ошибках
const errorMessages = document.querySelectorAll(".error-message");
errorMessages.forEach(msg => msg.remove());
// Проверка поле страны
if (!countrySelect.value) {
valid = false;
const errorSpan = document.createElement("span");
errorSpan.className = "error-message";
errorSpan.textContent = "Пожалуйста, выберите страну.";
countrySelect.parentNode.appendChild(errorSpan);
}
// Проверка даты рождения
if (!birthdayInput.value) {
valid = false;
const errorSpan = document.createElement("span");
errorSpan.className = "error-message";
errorSpan.textContent = "Пожалуйста, введите дату рождения.";
birthdayInput.parentNode.appendChild(errorSpan);
}
// Если не валидно, предотвращаем отправку формы
if (!valid) {
event.preventDefault();
} else {
// Здесь можно добавить дополнительную логику перед отправкой формы, если необходимо
document.querySelector(".setting-general-form").submit(); // Отправляем форму
}
});
});
```
**Обратите внимание на следующие моменты**:
- Убедитесь, что у вас есть идентификатор для кнопки отправки формы (в примере указан `submit-button`).
- Проверьте правильность выбора элементов (например, поле для даты рождения) в соответствии с вашей разметкой.
- Вы можете настроить отображение сообщений об ошибках так, как вам больше нравится.
С помощью этого кода вы сможете выполнить валидацию на стороне клиента перед отправкой формы, и нужные поля будут обязательными для заполнения.
<blockquote>Пытаюсь сделать обязательными поля: country и birthday</blockquote> Для этого существуtт атрибут required. Естественно это не отменяет проверки полей на бэкенде, но это немного другой вопрос. <br/> <br/> <blockquote>где даже submit находится за формой (внесение его внутрь не помогает). </blockquote> Как вообще идея вынести из формы кнопку субмита пришла в голову? А главное - зачем? <br/> <br/> <blockquote>Перепробовал все способы которые нарыл. Ничего не помогает.</blockquote> Плохо рыли. Это вообще дефолтное поведение формы, не требующее никаких скриптов. Форма не отправиться пока не будут заполнены указанные как required поля. Если нужны какие-либо еще манипуляции с формой на js, то делается по другому. Форма не трогается, а в кнопку никакие онклики не лепятся. На объект формы вешается событие онсубмит, после чего ПРОВАЛИДИРОВАННАЯ форма вызовет это событие, и дальше уже можно работать с данными формы, в том числе и отправить ее аяксом на бэкенд если необходимо.