使用javascript / asp.net选择多个项目

时间:2015-08-17 06:48:33

标签: javascript asp.net

这是我到目前为止我有一个视图,显示我没有报告时间的日期。

我的想法是勾选我要报告时间的日期,以便我可以报告多个日期的时间,如果我确实检查了一个我不想报告的日期,我只是取消选中该框。

我有那个工作,(有点)问题是,如果我想选择一个日期,我将始终必须选择列表中的第一个,然后才能检查任何其他日期。

像这样: enter image description here

只要我总是选择列表中的第一个日期,那就行得很好。

但这不是我想要的,我想要选项,所以我可以报告任何数据而无需先检查第一个日期。 这不起作用,因为我没有检查第一个日期: enter image description here

这是我的剧本:

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>
}

1 个答案:

答案 0 :(得分:1)

关于你的代码有一些观察,比如不是一个好的做法,有多个具有相同身份的项目(我可以说这是一个不好的做法,我说的是复选框,同名应该就够了)或类似的行:

if(document.getElementById("isoDate").checked) 

会破坏一切(我认为这是你问题的真正根源,因为结果是第一个元素,而不是被检查会转向其他)

看到你使用jquery,here,你会得到一个小样本的样本。