单击复选框显示日期选择器

时间:2012-08-24 07:12:28

标签: javascript ajax asp.net-mvc-3 asp.net-ajax

我有一张桌子 在表格中,第一列显示一个复选框,第二列显示一个文本框 现在我想点击一个复选框,应该在该特定行的文本框中启用datepicker。这应该发生在每行的每个复选框上。

这是我试过的照片:

//内部视图:

@foreach (var item in Model.Select((x, i) => new { Data = x, Index = i + 1 }))
    {
  <div class="cell"> <input type="checkbox" name="chkbox" class="a"  onclick="checkbox1()" data-id="@item.ID" />
        </div>
 <div class="cell" id="edit2">@Html.DisplayFor(modelItem => item.ExhibEndDate)</div>
 <div class="cell" id="edit1">@Html.TextBox("Enddate", item.ExhibEndDate) </div>

// Javascript代码:

function checkbox1() {

    if ($('.a').is(':checked')) {
        $(this).document.getElementById('edit1').style.display = 'block';
        $(this).document.getElementById('edit2').style.display = 'none';           
    }
}

在这里,我尝试隐藏和显示标签,但是只需在第一行的文本框中启用任何行中的复选框,就可以启用此选项。
请帮助我,我真的无法解决这个问题。

2 个答案:

答案 0 :(得分:1)

@foreach (var item in Model.Select((x, i) => new { Data = x, Index = i + 1 }))
    {
  <div class="cell"> <input type="checkbox" onclick="checkbox(@item.Index)" />
        </div>
 <div class="cell" id="edit-@item.Index">@Html.TextBox("Enddate", item.ExhibEndDate) </div>

JS:

function checkbox(index){
     $(this).document.getElementById('edit-' + index).style.display = 'none';
}

像这样的东西。我希望你明白这一点

答案 1 :(得分:1)

如果你可以为

这样的行添加容器div
<div class="row">
     <div class="cell"> <input type="checkbox" name="chkbox" class="a"  onclick="checkbox1(this)" data-id="@item.ID" />
    </div>
    <div class="cell datePicker" id="edit2">@Html.DisplayFor(modelItem => item.ExhibEndDate)</div>
    <div class="cell dateTxt" id="edit1">@Html.TextBox("Enddate", item.ExhibEndDate) </div>
</div>

然后在jquery中你可以写

function checkbox1(chkBox)
{
    $('.datePicker').hide(); 
    $('.dateTxt').show();
    if ($(chkBox).is(':checked')) {
            $(chkBox).parents('.row').children('.datePicker').show();
            $(chkBox).parents('.row').children('.dateTxt').hide();
    }
}

这应该像魅力一样。如果您具有相同的ID,则无法选择元素。因此,添加可用于查询的类名。