我正在尝试为我的汽车公司创建一个 3 层下拉列表菜单,我需要每个下拉菜单都依赖于先前选择的选项。
例如: CAR MAKE: BMW BODY STYLE: 3 Series ENGINE: S52 3.2L I6
我什至不知道要搜索什么,或者如何实现它(Javascript、PHP、JSON、Ajax 等),有人可以指出正确的方向,这将是构建此类下拉列表的最简单方法菜单?任何帮助是极大的赞赏!
我正在尝试为我的汽车公司创建一个 3 层下拉列表菜单,我需要每个下拉菜单都依赖于先前选择的选项。
例如: CAR MAKE: BMW BODY STYLE: 3 Series ENGINE: S52 3.2L I6
我什至不知道要搜索什么,或者如何实现它(Javascript、PHP、JSON、Ajax 等),有人可以指出正确的方向,这将是构建此类下拉列表的最简单方法菜单?任何帮助是极大的赞赏!
为此,您可能需要使用像knockout.js这样的库,它允许代码和标记之间的分离,从而使生活变得更加轻松。这是您要查找的内容的淘汰示例实现:http: //jsfiddle.net/pCc9w/4/
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:
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);
请记住,这只解决了问题的客户端部分。在服务器端,您需要某种方式来获取数据数组并将其发送给客户端。可能您应该使用 MVC 框架。一些例子是 ruby on rails、django、asp.net MVC。PHP 也有很多 MVC 框架。