Добрый вечер! <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`).
- Проверьте правильность выбора элементов (например, поле для даты рождения) в соответствии с вашей разметкой.
- Вы можете настроить отображение сообщений об ошибках так, как вам больше нравится.
С помощью этого кода вы сможете выполнить валидацию на стороне клиента перед отправкой формы, и нужные поля будут обязательными для заполнения.
Пытаюсь сделать обязательными поля: country и birthdayДля этого существуtт атрибут required. Естественно это не отменяет проверки полей на бэкенде, но это немного другой вопрос.
где даже submit находится за формой (внесение его внутрь не помогает).Как вообще идея вынести из формы кнопку субмита пришла в голову? А главное - зачем?
Перепробовал все способы которые нарыл. Ничего не помогает.Плохо рыли. Это вообще дефолтное поведение формы, не требующее никаких скриптов. Форма не отправиться пока не будут заполнены указанные как required поля. Если нужны какие-либо еще манипуляции с формой на js, то делается по другому. Форма не трогается, а в кнопку никакие онклики не лепятся. На объект формы вешается событие онсубмит, после чего ПРОВАЛИДИРОВАННАЯ форма вызовет это событие, и дальше уже можно работать с данными формы, в том числе и отправить ее аяксом на бэкенд если необходимо.