0

名前と値のペア SelectList(myUsers, "Key", "Value") が入力された ListBox があるとします。

@Html.ListBox("ListReviewers", (SelectList)ViewBag.ListOFReviewers, new { style = "width:120px;" }) 

この ListBox のオプションをダブルクリックして、以下のように SelectionList に配置します。

<div class="selectedEmployees">
  <select class="selectionList" multiple="multiple" name="AssignedReviewer"    style="width:120px;">
     <!--x.UserID, x.FirstName + " " + x.LastName) -->
     <option value=""></option>
  </select>
</div>

このコレクションを上記に配置したら、すべての値を別の SelectionList コレクションに保存して、後で使用できるようにします。

これが私のjQueryコードの始まりです:

<script type="text/javascript">

$('#ListReviewers').dblclick(function (i, selected) {
    //double click on this value of listbox of type SelectList(myUsers, "Key", "Value")

    //store this value and text
    var value = $(this).val;
    //var empName = $(this).data[0];
    var empName = $(selected).text();

    alert(empName);

    //append an option element <option value=""></option>
    $('.selectionList').append('<option id="' + value + '">' + empName + '</option>');

});

dblclicked コレクション オブジェクトの値は取得できますが、コレクション オブジェクトのテキストは取得できません。これを行うより良い方法はありますか?

4

1 に答える 1

0

optionイベントをselect 自体にアタッチしてみてください。その後、 を使用thisしてそのプロパティにアクセスできます。

$('#ListReviewers option').dblclick(function () {
    var value = $(this).val();
    var empName = $(this).text();

    $('.selectionList').append('<option id="' + value + '">' + empName + '</option>');
});

または、 と を使用clone()して、を一方から他方append()に移動することもできます。これにより、オプションが重複して追加されることを心配する必要がなくなります。optionselect

$('#ListReviewers option').dblclick(function () {
    var $newOptions = $(this).clone(false);
    $(this).remove();

    $('.selectionList').append($newOption);
});
于 2012-04-17T13:26:39.617 に答える