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 に答える