0

我想知道是否有人可以帮助我。我想根据从列表中选择的复选框生成一串用户 ID。

我目前的代码是:

<fieldset id="engineers" data-role="controlgroup">
@foreach (var item in Model.Maintenance_Team_List)
{
<label><input type="checkbox" name="Username"     />
@item.Username</label>@Html.Hidden("Booked_Engineer_ID",item.UserID)
}
</fieldset>

我尝试使用 jquery 检查是否选中了每个用户名复选框。从那里我试图找到它对应的booked_engineer_id。

var listed = $('#Username input:checked').each(function () {
        $("#engineer_div").find('#Booked_Engineer_ID').text();
    });

然而,这似乎没有选择任何东西。我正在寻找一个简单的输出,例如 23,10,11,1,其中这些值表示所选复选框booked_engineer_id 隐藏字段中的值。

谢谢你的帮助。

4

2 回答 2

1

首先,要获取输入字段的值,您应该使用val()而不是text().

但更重要的是你的算法会做一些奇怪的事情。我想你想得到这样的东西:

var listed = [];
$('input[name=Username]:checked').each(function (index, element) {
     var id = $(element).parent('label').next('input[name=Booked_Engineer_ID]').val();
     listed.push(id);
});
var simpleOutput = listed.join();

更新:

在像你这样的情况下,我最好建议使用数据属性而不是隐藏字段:

<fieldset id="engineers" data-role="controlgroup">
@foreach (var item in Model.Maintenance_Team_List)
{
    <label>
        <input type="checkbox" data-userId="@item.UserID" />
        @item.Username
    </label>
}
</fieldset>

和脚本:

var listed = [];
$('#engineers input:checked').each(function () {
     var id = $(this).data("userId");
     listed.push(id);
});
var simpleOutput = listed.join();
于 2012-12-16T21:47:15.480 回答
0

我无法让上面的代码正常工作,但它促使我朝着正确的方向前进并产生以下结果:

var listed = [];
    $('input[name=Username]:checked').each(function () {

        var ID = $(this).parent().next().val();
        listed.push(ID)
    });

    var SimpleOutput = listed.join();

喜欢 jquery 链接。

于 2012-12-17T11:25:56.280 回答