Валидация динамически созданных инпутов
Использую jquery-validate: v1.19.2 (https://jqueryvalidation.org/) Append-им такой блок:
<div class="product-form-template">
<div class="col-lg-12 text-center font-weight-bold"><h4 class="count-input">#1:</h4></div>
<div class="form-group">
<input type="text" class="form-control" name="Product_name[]" placeholder="{{trans('item_name_regpacel_dsc')}}*" required>
</div>
<div class="form-row">
<div class="form-group col-md-3">
<input type="text" class="form-control" name="Size[]" placeholder="{{trans('size')}}">
</div>
<div class="form-group col-md-3">
<input type="text" class="form-control" name="Color[]" placeholder="{{trans('color')}}">
</div>
<div class="form-group col-md-3">
<input type="text" class="form-control" name="Qty[]" placeholder="{{trans('qty')}}*" required>
</div>
<div class="form-group col-md-3">
<input type="text" class="form-control" name="Price[]" placeholder="{{trans('price')}}*" required>
</div>
</div>
</div>
$(document).ready(function () {
function updateNumbers() {
$.each($('.count-input'), function (k, v) {
$(this).html('#' + k++ + ':')
});
}
function addrow() {
$('.for-append').append($(".product-form-template").first().html())
updateNumbers()
}
$.validator.setDefaults({
submitHandler: function() {
alert(v.form());
}
});
$.validator.addMethod(
"regex",
function (value, element, regexp) {
var re = new RegExp(regexp);
return this.optional(element) || re.test(value);
}
);
let v = $("#regparcelform").validate({
errorPlacement: function (error, element) {
return true;
},
validClass: "is-valid",
errorClass: "is-invalid",
rules: {
"Tracking": {
required: true,
regex: /^(\s)?[A-Za-z0-9.]+(-[0-9]{1,2})?(\s)?$/gm,
minlength: 8,
maxlength: 34
},
"Warehouse": {
required: true
},
"Product_name[]": {
required: true,
regex: /^[A-z0-9\s\-.#,'()/+&:%]+$/gm,
minlength: 3,
maxlength: 100
},
"Size[]": {
required: false,
regex: /^[0-9A-z.,\-/]+$/gm,
minlength: 1,
maxlength: 50
},
"Color[]": {
required: false,
regex: /^[0-9A-z\s\-\/]+$/gm,
minlength: 1,
maxlength: 50
},
"Qty[]": {
required: true,
regex: /^([1-9][0-9]+|[1-9])$/gm,
minlength: 1,
maxlength: 5
},
"Price[]": {
required: true,
regex: /^([1-9][0-9]+|[1-9])((.|,)\d{1,2})?$/gm,
minlength: 1,
maxlength: 5
}
}
})
addrow()
$('.add-product-input').click(function () {
addrow()
})
})
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8"/>
<meta name="robots" content="noindex, nofollow">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>Validator</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.16.0/jquery.validate.min.js"></script>
</head>
<body>
<div class="container-fluid">
<div class="product-form-template" hidden>
<div class="col-lg-12 text-center font-weight-bold"><h4 class="count-input">#1:</h4></div>
<div class="form-group">
<input type="text" class="form-control" name="Product_name[]" placeholder="Product name*" required>
</div>
<div class="form-row">
<div class="form-group col-md-3">
<input type="text" class="form-control" name="Size[]" placeholder="Size">
</div>
<div class="form-group col-md-3">
<input type="text" class="form-control" name="Color[]" placeholder="Color">
</div>
<div class="form-group col-md-3">
<input type="text" class="form-control" name="Qty[]" placeholder="Qty*" required>
</div>
<div class="form-group col-md-3">
<input type="text" class="form-control" name="Price[]" placeholder="Price*" required>
</div>
</div>
</div>
<fieldset class="border rounded border-primary">
<legend class='text-center'>Validator</legend>
<div class="container-fluid mb-4">
<form method="post" class="validate" id="regparcelform">
<div class="form-group">
<input type="text" class="form-control text-uppercase" name="Tracking" placeholder="Tracking*" required>
</div>
<div class="for-append">
</div>
<div class="text-center mb-4">
<i class="text-success add-product-input btn">+</i>
</div>
<div class="text-center">
<input type="submit" value="submit" id="but_self" class="btn btn-primary">
</div>
</form>
</div>
</fieldset>
</div>
</body>
</html>
Валидацию проходит только первый блок, как быть с остальными?