Как добавить обязательное для выбора поле без входного тега в html

#javascript #html #css

#javascript #HTML #css

Вопрос:

У меня есть этот код выбора пола, как мне добавить к нему обязательный атрибут, точно такой же, как в текстовом поле ввода над ним. В коде для gender нет входного тега для добавления требуемого имени тега и идентификатора для оценки php. Как данные для пола будут отправлены на следующую страницу обработки в обычном поле выбора. Вопрос задан программистом 2-недельной давности.

 $('.gender-selector .item').on('click', function() {
  $('.gender-selector .item').removeClass('active');
  $(this).addClass('active')
})  
 .gender-selector {
  width: 300px;
}

.gender-selector h1,
h2,
h3,
h4,
h5,
h6 {
  text-align: center;
  width: 100%;
  height: 65px;
  align-items: center;
  display: flex;
  justify-content: center;
  font-weight: normal;
}

.gender-selector .container {
  width: 100%;
  display: flex;
  justify-content: space-between;
}

.gender-selector .container .item {
  width: 140px;
  height: 150px;
  border: 2px solid #eceff1;
  display: flex;
  justify-content: center;
  align-items: center;
  flex-direction: column;
  position: relative;
  background: #fff;
  border-radius: 8px;
  box-shadow: inset 0px 0px 0px #000 42;
  transition: all linear 0.1s;
}

.gender-selector .container .item.girl.active {
  border: 2px solid #e91e63;
}

.gender-selector .container .item.girl.active .circle {
  width: 15px;
  height: 15px;
  background: #e91e63;
}

.gender-selector .container .item.girl:hover {
  cursor: pointer;
  border: 2px solid #e91e63;
}

.gender-selector .container .item.boy.active {
  border: 2px solid #2196f3;
}

.gender-selector .container .item.boy.active .circle {
  width: 15px;
  height: 15px;
  background: #2196f3;
}

.gender-selector .container .item.boy:hover {
  cursor: pointer;
  border: 2px solid #2196f3;
}

.gender-selector .container .item .icon {
  width: 64px;
  height: 64px;
  overflow: hidden;
  margin: 0 auto;
}

.gender-selector .container .item .icon img {
  max-width: 100%;
  max-height: 100%;
}

.gender-selector .container .item p {
  text-align: center;
  margin-top: 10px;
}

.gender-selector .container .item .checked {
  width: 20px;
  height: 20px;
  background: #eceff1;
  border-radius: 50%;
  position: absolute;
  top: 5px;
  right: 5px;
  display: flex;
  justify-content: center;
  align-items: center;
}

.gender-selector .container .item .checked .circle {
  width: 0px;
  height: 0px;
  background: #e91e63;
  border-radius: 50%;
  transition: all linear 0.1s;
}  
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form>
  <input type="text" name="name" id="name" placeholder="My name is" required>
  <div class="gender-selector center">
    <h3>I am</h3>
    <div class="container">
      <div class="item girl">
        <div class="checked">
          <div class="circle"></div>
        </div>
        <div class="icon">
          <img src="https://image.flaticon.com/icons/svg/40/40739.svg" alt="">
        </div>
        <p>Female</p>
      </div>
      <div class="item boy">
        <div class="checked">
          <div class="circle"></div>
        </div>
        <div class="icon">
          <img src="https://image.flaticon.com/icons/svg/40/40541.svg" alt="">
        </div>
        <p>Male</p>
      </div>
    </div>
  </div>
  <input type="submit"></input>
</form>  

Комментарии:

1. Вам нужно решение для проверки без входных тегов?

Ответ №1:

В вашем коде отсутствуют входные данные для каждого параметра. Этот вход должен быть типа radio и должен иметь одинаковое имя для обоих с разными значениями, например:

 <label>
    <input type="radio" required="required" value="boy"> Boy
</label>

<label>
     <input type="radio" required="required" value="girl"> Girl
</label>
  

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

Если вы хотите сделать тег ввода скрытым, просто сделайте это и в своем JS добавьте выбранный к тому, который пользователь нажимает, когда он нажимает на них.

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

Комментарии:

1. Спасибо, но есть ли способ отобразить ошибки вручную, если форма отправлена и ввод с именем «пол» не выбран, а затем запустить код для отображения ошибки вручную

2. @AvyeLe Конечно, поскольку вы используете jquery, вы можете легко добавить запрет по умолчанию для отправки формы и проверить все данные перед фактической отправкой и добавить к ним свои собственные ошибки проверки.