javascript - 从下拉列表一中选择,根据下拉列表一中的值删除选择选项

标签 javascript jquery html drop-down-menu

我们使用带有内容的下拉菜单来选择机场及其航站楼,然后使用另一个下拉菜单来选择该机场和航站楼内的服务。例如机场 1 和国际航站楼。一些机场和航站楼现在不包含服务。选择该机场和航站楼后,应删除选择的选项,并在这些行上不提供任何服务等或其他内容

到目前为止已编辑的代码

//form one
<select class="req input-disabled" name="ddlairport_terminal" id="ddlairport_terminal">
    <option value="">Airport terminal</option>
    <option value="92|138">Suvarnabhumi International</option>
    <option value="92|135">Suvarnabhumi Domestic</option>
    <option value="93|138">Don Mueang International</option>
    <option value="93|135">Don Mueang Domestic</option>
</select>

<select class="req input-disabled" name="ddltransit" id="ddltransit">
    <option value="">Choose a service</option>
</select>

//form 2
<select class="req input-disabled" id="ret_ddlairport_terminal" name="ret_ddlairport_terminal">
    <option value="">Airport terminal</option>
    <option value="92|138">Suvarnabhumi international</option>
    <option value="92|135">Suvarnabhumi domestic</option>
    <option value="93|138">Don muang international</option>
    <option value="93|135">Don muang domestic</option>
</select>

<select class="req input-disabled" name="ret_ddltransit" id="ret_ddltransit">
    <option value="">Choose a service</option>
</select>

这是我的 JavaScript

// airport service tab
var allservices = '<option value="">Choose a service</option><option value="110">Arrival</option><option value="111">Departure</option><option value="Gate to gate">Gate to gate (Transit)</option>';
var partialserviceairports = ["93|135","93|138"];
var airportservicemapping = {"93|135":["110","Gate to gate"],"93|138":["110","Gate to gate"]};
var servicenamemapping = {"110":"Arrival","111":"Departure","Gate to gate": "Gate to gate (Transit)"};
$(document).ready(function(){
    $("select#ddlairport_terminal").on('change',function(){
        var selectedval = $(this).val();
        var servieces = "";
        if(!selectedval || partialserviceairports.indexOf(selectedval)>-1)
        {
            $("select#ddltransit").html(getOptions(selectedval));
        }
        else
        {
            $("select#ddltransit").html(allservices);
        }

    });
    $("select#ret_ddlairport_terminal").on('change',function(){
        var selectedval = $(this).val();
        var servieces = "";
        if(!selectedval || partialserviceairports.indexOf(selectedval)>-1)
        {
            $("select#ret_ddltransit").html(getOptions(selectedval));
        }
        else
        {
            $("select#ret_ddltransit").html(allservices);
        }

    });

    function getOptions(airportvalue)
    {
        var options = airportservicemapping[airportvalue];
        var optionshtml = "";
        for(var value in options)
        {
            var key = options[value];
            optionshtml += '<option value="'+key+'">'+servicenamemapping[key]+'</option>';
        }
        optionshtml = '<option value="">Choose a service</option>' + optionshtml;
        return optionshtml;
    }
});

最佳答案

这可能就是您正在寻找的。

var partialserviceairports = ["93|135","93|138"];
var airportservicemapping = {"93|135":["110","Gate to gate"],"93|138":["110","Gate to gate"]};
var servicenamemapping = {"110":"Arrival","111":"Departure","Gate to gate": "Gate to gate"};
var disabledoptions = {"ret_ddltransit":["Gate to gate"]};

$(document).ready(function(){
    $("select#ddlairport_terminal").on('change',function(){
        var selectedval = $(this).val();
        var servieces = "";
        if(!selectedval || partialserviceairports.indexOf(selectedval)>-1)
        {
            $("select#ddltransit").html(getOptions(selectedval));
        }
        else
        {
            $("select#ddltransit").html(getAllServices());
        }

    });
    
    $("select#ret_ddlairport_terminal").on('change',function(){
        var selectedval = $(this).val();
        var servieces = "";
        if(!selectedval || partialserviceairports.indexOf(selectedval)>-1)
        {
            $("select#ret_ddltransit").html(getOptions(selectedval,"ret_ddltransit"));
        }
        else
        {
            $("select#ret_ddltransit").html(getAllServices());
        }

    });
    
    function getAllServices()
    {
        var services = "";
        for(var key in servicenamemapping)
        {
            services += '<option value="'+key+'">'+servicenamemapping[key]+'</option>';
        }
        services = '<option value="">Choose a service</option>' + services;
        return services;
    }
    
    function getOptions(airportvalue,selectid)
    {
        var options = airportservicemapping[airportvalue];
        var optionshtml = "";
        for(var value in options)
        {
            var key = options[value];
            optionshtml += '<option value="'+key+'"';
            if(selectid && disabledoptions[selectid] && disabledoptions[selectid].indexOf(key)>-1)
            {
                optionshtml += 'disabled';
            }
            optionshtml+='>'+servicenamemapping[key]+'</option>';
        }
        optionshtml = '<option value="">Choose a service</option>' + optionshtml;
        return optionshtml;
    }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select class="req input-disabled" id=ddlairport_terminal name="ddlairport_terminal">
 <option value="">Airport terminal</option>
 <option value="92|138">Suvarnabhumi international</option>
 <option value="92|135">Suvarnabhumi domestic</option>
 <option value="93|138">Don muang international</option>
 <option value="93|135">Don muang domestic</option>
 <option value="94|138">Chennai international</option>
 <option value="94|135">Chennai domestic</option>
</select>


<select class="req input-disabled" name="ddltransit" id="ddltransit">
    <option value="">Choose a service</option>
</select>

<select class="req input-disabled" id="ret_ddlairport_terminal" name="ret_ddlairport_terminal">
    <option value="">Airport terminal</option>
    <option value="92|138">Suvarnabhumi international</option>
    <option value="92|135">Suvarnabhumi domestic</option>
    <option value="93|138">Don muang international</option>
    <option value="93|135">Don muang domestic</option>
</select>

<select class="req input-disabled" name="ret_ddltransit" id="ret_ddltransit">
    <option value="">Choose a service</option>
</select>

关于javascript - 从下拉列表一中选择,根据下拉列表一中的值删除选择选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48319472/

相关文章:

javascript - 单击不同的图标(非 Bootstrap )时如何显示不同的模态/模态内容

Javascript:比较由 javascript 设置的 backgroundColor

javascript - 单击javascript中的下一步按钮后如何显示错误状态?

javascript - ngDestroy 生命周期不在动态创建的 Angular 组件中触发

javascript - Jquery 将所有文本更改为粗体而不是后续文本

javascript - jQuery 的 stop() 似乎阻止了尚未排队的动画

jquery - 如何随机化 Twitter Bootstrap 轮播中的图像?

javascript - Python Selenium - 如何单击没有框架的视频的全屏按钮

javascript - 使用 Jquery AJAX 获取 Java 对象作为 JSON 响应

javascript - JavaScript 中的 if 语句与 switch 语句