我使用 for 循环动态地将字段添加到表单中,效果很好。但是,我添加的字段应该是 DatePickers,并且它们也需要 javascript。我尝试为它们提供循环迭代的整数中的唯一 ID,但似乎找不到它们?
这是视图:
@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>
}
如果我删除 javascript 中的“+ @i”和 html.helper 中的“+ i”,它适用于第一行,但之后的所有行/字段都不起作用(我猜是因为脚本超出了其范围)。如果我保留它们,则所有字段都不适用于该脚本。
动态命名它们时我做错了什么吗?
DateRangePicker 取自此处,但我也尝试过发生相同问题的其他日期选择器。
九州编程
慕斯709654
相关分类