这是我到目前为止我有一个视图,显示我没有报告时间的日期。
我的想法是勾选我要报告时间的日期,以便我可以报告多个日期的时间,如果我确实检查了一个我不想报告的日期,我只是取消选中该框。
我有那个工作,(有点)问题是,如果我想选择一个日期,我将始终必须选择列表中的第一个,然后才能检查任何其他日期。
只要我总是选择列表中的第一个日期,那就行得很好。
但这不是我想要的,我想要选项,所以我可以报告任何数据而无需先检查第一个日期。 这不起作用,因为我没有检查第一个日期:
这是我的剧本:
var dateArr=new Array();
function SetDate(dt) {
if(document.getElementById("isoDate").checked) {
if(dateArr.indexOf(dt)<0){ //Check if date is already added. if not add it to array.
dateArr.push(dt);
}
else{
var index=dateArr.indexOf(dt);
if (index > -1) {
dateArr.splice(index, 1);//Remove from array if checkbox uncheck
}
}
$('#date').val(dateArr.join(" ")); //Add space separated string to the #date element.
}
}
这是我的观点,我得到了日期:
@foreach (var date in ViewBag.MissingDays)
{
var isoDate = date.ToString("yyMMdd");
<div class="col-md-1">
<input type="checkbox" id="isoDate" name="isoDate" value="@isoDate"onclick="javascript:SetDate('@isoDate');" />
@isoDate
</div>
}
答案 0 :(得分:1)
关于你的代码有一些观察,比如不是一个好的做法,有多个具有相同身份的项目(我可以说这是一个不好的做法,我说的是复选框,同名应该就够了)或类似的行:
if(document.getElementById("isoDate").checked)
会破坏一切(我认为这是你问题的真正根源,因为结果是第一个元素,而不是被检查会转向其他)
看到你使用jquery,here,你会得到一个小样本的样本。