在checkbo上获取html.textboxfor里面td元素的值点击jquery

时间:2016-02-23 22:32:48

标签: jquery asp.net-mvc razor

我在获取html表@Html.TextBoxFor()元素中的<td>元素的值时遇到问题。表格中有一个复选框,选中此复选框后,我需要获取input元素的值。我尝试了很多东西,但它总是回归&#39; undefined&#39;值。

在MVC视图中

@{
    for(int i=0; i<Model._list.count; i++)
    {
        <tr style='@stylet' class="erow">
            <td class="idcol1">@Html.TextBoxFor(m => m._list.st[i].idcol1)</td>
            <td>@Html.TextBoxFor(m => m._list.st[i].idcol2)</td>
            <td>@Html.TextBoxFor(m => m._list.st[i].idcol3)</td>
            <td>@Html.TextBoxFor(m => m._list.st[i].idcol4)</td>
            <td>@Html.TextBoxFor(m => m._list.st[i].idcol5)</td>
            <td>@Html.TextBoxFor(m => m._list.st[i].idcol6)</td>
            <td class="editChk1"><input type ="checkbox" class="editChk" data-rowid="@Model._list[i].LineNo"/></td> 
            <td style="display:none">
                @Html.HiddenFor(m => m._list[i].prodCode, new { @class = "hdnprodId" })
            </td>
        </tr>
    }
}

在剧本中:

<script type="text/javascript">
    $(document).ready(function () {
        $('.editChk').click(function () {
            var rowId = $(this).data("rowid");
            var a = $(this).closest("idcol1").val();
            alert(a); // a is returing undefined 
        });
    });
</script>

检查.editchk - 需要idcol1

1 个答案:

答案 0 :(得分:1)

您可以使用相对选择器

$('.editChk').click(function () {
    var row= $(this).closest('tr');
    var a = row.children('.idcol1').children('input').val();
    alert(a);
});

您当前的代码无效,因为您找到了.closest()复选框的class="idcol1"祖先,而class="idcol1"不存在,即使有,<td>的元素也是{ {1}}元素,而不是文本框。