简体   繁体   English

创建从属下拉列表

[英]Creating Dependent Dropdown list

I am trying to create a 3 layered drop down list menu for my automotive company, I need each drop down menu to be dependent on the previous selected option. 我正在尝试为我的汽车公司创建一个三层下拉列表菜单,我需要每个下拉菜单都依赖于先前选择的选项。

For example: CAR MAKE: BMW BODY STYLE: 3 Series ENGINE: S52 3.2L I6 例如: 汽车制造:宝马车身样式: 3系列发动机: S52 3.2L I6

I don't even know what to search for, or how to implement it(Javascript, PHP, JSON, Ajax etc), can someone point me in the right direction on which would be the easiest way to go about building such a drop down menu? 我什至不知道要搜索什么或如何实现(Javascript,PHP,JSON,Ajax等),有人可以指出正确的方向,这将是构建此类下拉菜单的最简单方法菜单? Any help is greatly appreciated! 任何帮助是极大的赞赏!

To do this, you might want to use a library like knockout.js , which allows for separation between code and markup, thus making life much easier. 为此,您可能需要使用像基因敲除(knockout.js )这样的库,该库允许代码和标记之间的分离,从而使工作变得更加轻松。 Here is a knockout example implementation of what you are looking for: http://jsfiddle.net/pCc9w/4/ 这是您要查找的内容的剔除示例实现: http : //jsfiddle.net/pCc9w/4/

Html: HTML:

<select data-bind="options:data, optionsText:'name', value:selectedLevel1"></select>

    <!--ko with: selectedLevel1 -->
        <select data-bind="options:subitems, optionsText:'name', value:$root.selectedLevel2"></select>
<!--/ko-->



    <!--ko with: selectedLevel2 -->
<select data-bind="options:subitems, optionsText:'name', value:$root.selectedLevel3"></select>
    <!--/ko-->    

Javascript: Javascript:

var data = [
    {
        name:"level1",
        subitems:[
            {
                name:"level1.1",
                subitems:[
                    { name:"level1.1.1" },
                    { name:"level1.1.2" },
                    { name:"level1.1.3" }
                ]
            },
            {
                name:"level1.2",
                subitems:[
                    { name:"level1.2.1" },
                    { name:"level1.2.2" },
                    { name:"level1.2.3" }
                ]
            }]
    },
    {
        name:"level2",
        subitems:[
            {
                name:"level2.1",
                subitems:[
                    { name:"level2.1.1" },
                    { name:"level2.1.2" },
                    { name:"level2.1.3" }
                ]
            },
            {
                name:"level2.2",
                subitems:[
                    { name:"level2.2.1" },
                    { name:"level2.2.2" },
                    { name:"level2.2.3" }
                ]
            }]
    },    
]

    var dataViewModel = ko.mapping.fromJS(data);
    var mainViewModel = {
        data:dataViewModel,
        selectedLevel1:ko.observable(),
        selectedLevel2:ko.observable(),
        selectedLevel3:ko.observable()
    }



    ko.applyBindings(mainViewModel);    

Keep in mind that this only solves the client-side part of the problem. 请记住,这只能解决问题的客户端部分。 On the server side, you need some way to obtain the data array and send it to the client. 在服务器端,您需要某种方式来获取数据数组并将其发送给客户端。 Probably you should use an MVC framework. 可能您应该使用MVC框架。 Some examples are ruby on rails, django, asp.net MVC. 一些示例是ruby on rails,django,asp.net MVC。 PHP has lots of MVC frameworks too. PHP也有许多MVC框架。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM