1

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

这是我试过的:

//内部视图:

@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';           
    }
}

在这里,我尝试隐藏和显示标签,但是通过单击任何行中的复选框,日期选择器仅在第一行的文本框中启用。
请帮助我,我真的无法弄清楚这一点。

4

2 回答 2

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

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

于 2012-08-24T07:25:37.393 回答
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,您将无法选择元素。因此,添加可用于查询的类名。

于 2012-08-24T10:22:15.260 回答