如何在JavaScript / jQuery中设置/重置以前选择的多选选项

时间:2016-10-03 09:25:20

标签: javascript jquery

在我的应用程序中,用户选择不同的团队和基于球队,他选择了一些球员。现在用户正在更新他的团队选择。自从他选择了“皇家挑战者”团队&一些球员。他不允许这样做,一旦他将球员从“皇家挑战者”或任何球队中移除,那么他将被允许更新他的球队选择。 因此,在更新他的团队之前(在onChange()之前),我正在检查玩家的数量和数量。如果玩家数量大于1,则显示弹出窗口通知他移除玩家。 现在点击“确定”,他应该看到之前选择的球队名称。

这是我的代码。

const prevSelected = $('#teams :selected').map(function() {return $.trim($(this).text())}).get();
//prev selected value is : Kolkata,Delhi,Royal Challengers
$('#teams').on('change', function(){ 
    const selected = $('#teams :selected').map(function() {return $.trim($(this).text())}).get();
    var count = $("#teamName").find("br").length;           

    if(count >= 1){         
        //here user is updating his team. 
        if( selected.indexOf('Royal Challengers') == -1){
            alert("There are currently "+count+" players with "+ teamName +". These players must be migrated to a different teams before you can remove the Team 'Royal Challengers' from this Tournament");
            // code to get the previous selected players
            return;
        } 
    }

}

我尝试了这个但是没有用 -

 if(count >= 1){
    //user changes, if the new selected option contains other than "Royal Challengers" then display the pop up & clicking on "OK" display the previous selected teams.                   
    if( selected.indexOf('Royal Challengers') == -1){                       
       alert("-------");
       $(prevSelected).prop('selected', true);
    }
 }

请帮忙。

1 个答案:

答案 0 :(得分:0)

这解决了我的问题 -

for(var i=0;i<selected.length;i++){
    if(selected[i]!=''){
        $('option:contains('+selected[i]+')').prop('selected', false);
    }
}

for(var i=0;i<prevSelected.length;i++){
    if(prevSelected[i]!=''){
        $('option:contains('+prevSelected[i]+')').prop('selected', true);       
    }
}