2

JQuery Select Box and Loop Help の質問に記載されているものを使用しようとしましたが、実装が少し異なっているようで、機能しないようです。

オプションを移動しようとしている fromSelectBox と toSelectBox があります。設定しようとしている条件は 2 つあります。オプション A が toSelectBox 側に配置されている場合は、常に一番下にある必要があります。オプション B が既に toSelectBox 側にある場合、A は移動できません。

リストの一番下からオプションAまたはBを移動できず、AまたはBの下には何も移動できないようにすることができましたが、アイテムのグループを一度に移動すると順序が乱れる可能性があります.

基本的に私がやりたいことは、アイテムが fromSelectBox から toSelect ボックスに移動されたときはいつでもループして、必要に応じて再起動することです。

これが私がこれまでに持っているものです。

function resortOnMove() {
    $('select').each(function(){
       $('option', this).each(function(){
        if ($('#toSelectBox option:selected').val() == '03' || $('#toSelectBox option:selected').val() == '01') {
           alert("moving now");
            if ($('#toSelectBox option:selected').index() < $('#toSelectBox option:last').index()) {
               $('#toSelectBox option:selected').insertAfter($('#toSelectBox option:last'));
          }
       }
       })
    });
4

1 に答える 1

0

再ソートを行うよりも、倍数を追加するときに最後に値を追加する方がよいと判断しました。

   $('#moveright').click(function () {
    var tempObjects = null;
    $('#fromSelectBox option:selected').each(function () {
        if (($('#toSelectBox option:last').val() == "03" || $('#toSelectBox option:last').val() == "01") && ($('#fromSelectBox option:selected').val() == "03" || $('#fromSelectBox option:selected').val() == "01")) {
            alert($('#toSelectBox option:last').text() + " and " + $('#fromSelectBox option:selected').text() + " cannot both be in Prioritized Categories.");
            return false
        }
        else if ($('#toSelectBox option:last').val() == "03" || $('#toSelectBox option:last').val() == "01") {
                var movingObjects = $(this);
                movingObjects.remove();
                movingObjects.insertBefore($('#toSelectBox option:last'));
        }
        else {
            $('#fromSelectBox option:selected').each(function () {
                if ($(this).val() === "01" || $(this).val() === "03") {
                    if (tempObjects!=null){
                        alert(tempObjects.text()+ " and " + $(this).text() + " cannot both be in Prioritized Categories.");
                        return false
                    }
                    tempObjects = $(this);
                    $(this).remove();
                }
                $(this).remove().appendTo('#toSelectBox');
            });
            if (tempObjects != null) {
                tempObjects.appendTo('#toSelectBox');
            }
        }
    });
});
于 2012-11-16T20:20:02.200 に答える