所以我在我的mvc页面中的多个项目上生成日期选择器(基于前一页数据的未定义数量。
目前只有最后一个文本框上有可用的日期选择器。
我首先为每个项目生成一个datepicker函数。
@for (int p = 0; p < Model.InputParameters.Count; p++)
{
if (Model.InputParameters[p].DatePicker))
{
var name2 = "#datepicker"+p;
<script type="text/javascript">
var jsondetail2 = '@Html.Raw(Json.Encode(name2))';
var newname2 = JSON.parse(jsondetail2);
$(function () {
$(newname2).datepicker();
});
</script>
}
}
然后将它们画出来。
var id = "datepicker" + i;
@Html.TextBoxFor(modelitem => Model.InputParameters[i].Value, DateTime.Now.ToString("dd/MM/yyyy"), new { @id = id})
firebug中没有错误,为每个日期选择器生成了javascript,但只触发了最后绘制的javascript。我很难过,仍然学习javascript所以任何解释的答案将不胜感激!谢谢你们。
答案 0 :(得分:1)
您的scrips正在执行,但无法找到任何绑定DatePicker的文本框(即,在生成输入之前脚本触发,因此jQuery选择器无法找到输入)。您需要重组,例如:
@for (int p = 0; p < Model.InputParameters.Count; p++)
{
if (Model.InputParameters[p].DatePicker))
{
var id = "datepicker" + p.ToString();
@Html.TextBoxFor(modelitem => Model.InputParameters[p].Value, DateTime.Now.ToString("dd/MM/yyyy"), new { @id = id})
<script type="text/javascript">
//var jsondetail2 = '@Html.Raw(Json.Encode(name2))';
var newname2 = "#@(Html.Raw(id))";//JSON.parse(jsondetail2);
$(function () {
$(newname2).datepicker();
});
</script>
}
}
答案 1 :(得分:0)
经过大量的谷歌搜索解决了它。
在for循环中生成每个文本框,如下所示。
var id = "datepicker" + i;
@Html.TextBoxFor(modelitem => Model.InputParameters[i].Value,DateTime.Now.ToString("dd/MM/yyyy"), new { @id = id, @class = "datepicker"})
新的javascript(IE6,7需要doc准备好)
$(document).ready(function () {
$('.datepicker').each(function () {
$(this).datepicker({ dateFormat: "dd/mm/yy" });
});
});