Я добавил поля в мою форму динамически, используя for-l oop, который отлично работает. Однако поля, которые я добавляю, должны быть DatePickers, и они также требуют javascript. Я пытался дать им уникальный идентификатор из целого числа, через которое проходит цикл, но, похоже, он их не находит?
Это представление:
@model ProjectName.Models.ViewModels.GuestCreatorViewModel
@using Res = ProjectName.Resources.Resources
@for (int i = 1; i <= Model.NumOfGuests; i++)
{
<div class="row">
<div class="form-group">
@Html.Label(Res.Name, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.TextBoxFor(model => model.Name, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Name, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.Label(Res.Period, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.TextBoxFor(model => model.DateRange, new { id = "dateRangePicker" + i, htmlAttributes = new { @class = "form-control" }, @readonly = true })
@Html.ValidationMessageFor(model => model.DateRange, "", new { @class = "text-danger" })
</div>
</div>
</div>
<script type="text/javascript">
$('input[name="dateRangePicker'+@i'"]').daterangepicker();
$('#dateRangePicker'+ @i'').daterangepicker({
"showWeekNumbers": true
}, function (start, end, label) {
console.log('New date range selected: ' + start.format('YYYY-MM-DD') + ' to ' + end.format('YYYY-MM-DD') + ' (predefined range: ' + label + ')');
});
</script>
}
Если я удаляю "+ @i" в javascript и "+ i" в html .helper это работает для первой строки, но все строки / поля после не работают (я думаю, потому что скрипт находится за пределами их области видимости) , Если я сохраню их, ни одно из полей не будет работать со сценарием.
Что-то не так, когда я их динамически называю или что-то в этом роде?
DateRangePicker взят из здесь, но я также пробовал другие средства выбора даты, где возникает та же проблема.