1

2 つの ASP ListBox があります。以下に示すように、lbAvailable は WebMethod を使用して PageLoad に取り込まれ、すべての都市に取り込まれます。LbChoosen は、選択されたドロップダウン値に応じて設定されます。ドロップダウンには 4 つのオプション (ALL、Top25、Top50、Top100) があります。たとえば、値 4 である Top 25 を選択すると、lbChosen は上位 25 の都市を入力します (これはすべて機能します)。

私の問題は、lbAvaliable が常にすべての都市に存在することです。したがって、上位 25 都市を lbChoosen に入力する上位 25 を選択した場合、それらの値 (上位 25 都市) を lbAvailable から削除するにはどうすればよいですか?

function LoadMarketsAvailableJS() {
var ddlFootprint = $('#ddlFootprint');
var lbChoosen = $('#lbChoosen');
var lbAvailable = $('#lbAvailable');
lbChoosen.empty();

var SelectedMarkets = [];
var url = "";

 //Load lbAvailable on Page Load with all Markets
 $.ajax({
    type: "POST",
    contentType: "application/json; charset=utf-8",
    url: "Campaign.aspx/LoadAvailableMarkets",
    dataType: "json",
    success: function (msg) {
    var obj = $.parseJSON(msg.d);
    for (var i = 0; i < obj.Markets.length; i++) {
        if (SelectedMarkets.indexOf(obj.Markets[i].id.toString()) == -1) {
    $("#lbAvailable").append($("<option></option>")
   .attr("value",          obj.Markets[i].id)
   .text(obj.Markets[i].name + " - " + obj.Markets[i].rank));

    }
        }
            },
    error: function(result) {
    alert("Error");
    }
});


//Check DropdownList
if (parseInt(ddlFootprint.val()) == 1) {
    url = 'Campaign.aspx/LoadAvailableMarkets';
} else if (parseInt(ddlFootprint.val()) == 2) {
    url = 'Campaign.aspx/LoadTop100Markets';
}
else if (parseInt(ddlFootprint.val()) == 3) {
    url = 'Campaign.aspx/LoadTop50Markets';
}
else if (parseInt(ddlFootprint.val()) == 4) {
    url = 'Campaign.aspx/LoadTop25Markets';
}
else if (parseInt(ddlFootprint.val()) == 5) {
    url = 'Campaign.aspx/LoadAvailableMarkets';
}
//Load Select Dropdown Value to lbChoosen
if (url.length > 0) {
    $.ajax({
        type: "POST",
        url: url,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (msg) {
            var obj = $.parseJSON(msg.d);
            for (var i = 0; i < obj.Markets.length; i++) {
                if (SelectedMarkets.indexOf(obj.Markets[i].id.toString()) == -1) {
                    lbChoosen
                        .append($("<option></option>")
                        .attr("value", obj.Markets[i].id)
                        .text(obj.Markets[i].name + " - " + obj.Markets[i].rank));
                }
            }
        },
        error: function (jqXHR, textStatus, errorThrown) {
        },
        complete: function (jqXHR, textStatus) {
        }
    });
}

}
4

1 に答える 1

1

あなたが求めていることを理解したと仮定すると、lbChoosen に追加されたときに lbAvailable からオプションを削除したい場合は、次の行を追加する必要があります。

lbAvailable.find('option[value="' + obj.Markets[i].id + '"]').remove();

したがって、コードは次のようになります。

success: function (msg) {
    var obj = $.parseJSON(msg.d);
    for (var i = 0; i < obj.Markets.length; i++) {
        if (SelectedMarkets.indexOf(obj.Markets[i].id.toString()) == -1) {
            lbChoosen
                .append($("<option></option>")
                .attr("value", obj.Markets[i].id)
                .text(obj.Markets[i].name + " - " + obj.Markets[i].rank));
            lbAvailable.find('option[value="' + obj.Markets[i].id + '"]').remove();
        }
    }
},
于 2013-08-08T14:19:41.360 に答える