Jquery добавляет правила проверки для выбора динамически созданного

У меня возникли проблемы с динамически добавляемыми входными данными. особенно с вводом "выбрать"

Я уже пытался вручную проверить (wo Jquery validate), были ли отправленные входные данные правильными, но я столкнулся с такой же проблемой. «Обязательный» класс тоже не помогает.

Вот html:

<form id='myform'>
  <div>
    <div id = "addRow">+</div>
    <div id = "deleteRow">-</div>
  </div>
  <div>
    <table id = "tableex">
      <tr>
        <td>
          <select name = "selectbox[]" data-selected = "" class='selectdyna required'>
        <option value = "" selected = "selected" disabled = "disabled">env :</option>
        <option value = "1">option1</option>
        <option value = "2">option2</option>
        <option value = "3">option3</option>
        </select>
        </td>
      </tr>
    </table>
  </div>

  <div>
    <input type='submit' value='Validate'>
  </div>
</form>

вот мой js:

$(document).ready(function() {
  $("#addRow").click(function() {

    var str = "<tr>\n" +
      "                <td id=\"selecttd\">\n" +
      "                    <select name=\"selectbox[]\" class='selectdyna required' data-selected=\"\">\n" +
      "                        <option value=\"\" selected=\"selected\" >env :</option>\n" +
      "                        <option value=\"1\">option1</option>\n" +
      "                        <option value=\"2\">option2</option>\n" +
      "                        <option value=\"3\">option3</option>\n" +
      "                    </select>\n" +
      "                </td>\n" +
      "            </tr>";
    $("#tableex").append(str)
     $('#myform').validate();
        $('.selectdyna').rules('add',  { 'required': true });
  })
  $("#deleteRow").click(function() {
    if ($("#tableex tr").length > 1) {
      $("#tableex tr:last").remove();

    } else {
      alert("there must been one line minimum.")
    }
  })
})

вот ссылка на скрипку: https://jsfiddle.net/v3tj2c5u/

Проверка Jquery работает со свойством имени ввода. Вы даете одно и то же имя в каждом входе, поэтому он показывает одну ошибку, и когда вы выбираете один из них, ошибка скрывается.

Alok Mali 10.06.2019 15:57
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
1
42
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

$(document).ready(function() {
  $("#addRow").click(function() {
   var count= $("#tableex tr").length+1;
    var str = "<tr>\n" +
      "                <td id=\"selecttd\">\n" +
      "                    <select name=\"selectbox"+count+"\" class='selectdyna required' data-selected=\"\">\n" +
      "                        <option value=\"\" selected=\"selected\" >env :</option>\n" +
      "                        <option value=\"1\">option1</option>\n" +
      "                        <option value=\"2\">option2</option>\n" +
      "                        <option value=\"3\">option3</option>\n" +
      "                    </select>\n" +
      "                </td>\n" +
      "            </tr>";
    $("#tableex").append(str)
     $('#myform').validate();
        $('.selectdyna').rules('add',  { 'required': true });
  })
  $("#deleteRow").click(function() {
    if ($("#tableex tr").length > 1) {
      $("#tableex tr:last").remove();

    } else {
      alert("there must been one line minimum.")
    }
  })
})

Рабочая демонстрация

Идея заключалась в том, чтобы получить результат в виде массива, когда я отправляю свою форму. Также я думал, что это единственный способ сделать это. Думаю, я попробую ваш способ, так как он, кажется, решил много других моих проблем ^^. Я думаю, это хорошее решение, но я также хотел бы понять, почему мое решение не сработает. Большое спасибо за вашу помощь.

Bastet 10.06.2019 17:09

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