根据选中的复选框选择相关的隐藏值

时间:2012-12-16 21:44:40

标签: jquery

我想知道是否有人可以帮助我。我想根据从列表中选择的复选框生成一串用户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,其中这些值代表所选复选框中的值expected_engineer_id隐藏字段。

感谢您的帮助。

2 个答案:

答案 0 :(得分: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();

答案 1 :(得分:0)

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

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

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

    var SimpleOutput = listed.join();

爱jquerys chaining。