У меня возникли проблемы с динамически добавляемыми входными данными. особенно с вводом "выбрать"
Я уже пытался вручную проверить (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/



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я не понимаю, почему вам нужно имя раскрывающегося списка таким образом. Вы можете сделать это, как показано ниже
$(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.")
}
})
})
Идея заключалась в том, чтобы получить результат в виде массива, когда я отправляю свою форму. Также я думал, что это единственный способ сделать это. Думаю, я попробую ваш способ, так как он, кажется, решил много других моих проблем ^^. Я думаю, это хорошее решение, но я также хотел бы понять, почему мое решение не сработает. Большое спасибо за вашу помощь.
Проверка Jquery работает со свойством имени ввода. Вы даете одно и то же имя в каждом входе, поэтому он показывает одну ошибку, и когда вы выбираете один из них, ошибка скрывается.