https://jsfiddle.net/adm0L6x1/
<div class="input-group" style="margin-left: 20px;">
<select class="form-control" id="asd">
<option></option>
<option>BOSTON, MA</option>
<option>FORT LEE, NJ</option>
<option>HACKENSACK, NJ</option>
<option>NEWARK, NJ</option>
<option>NEY YORK CITY, NY</option>
<option>NORTH ARLINGTON, NJ</option>
<option>PHILADELPHIA, PA</option>
<option>WASHINGTON, D.C</option>
</select>
<select class="form-control" id="asd">
<option></option>
</select>
</div>
&#13;
所以基本上我正在制作一个表单,这样用户就可以选择一个目的地去了。当我点击&#34; From&#34;中的选项时,我只希望某些选项显示在&#34; To&#34;中。例如,如果他们选择From:Boston,MA我也只想要纽约市和华盛顿特区出现。但如果我选择From:NYC,我只希望费城出现在那里。我看了几个jquery / javascript示例,但在这个确切的场景中找不到任何东西。
答案 0 :(得分:1)
这很好用。您想在javascript中创建一个存储城市和目的地的配置对象。使用config填充FROM选择。然后在FROM选择中使用eventListener
来获取所选值。最后清除并填充TO,使用配置中列出的新选择的值(目的地)进行选择。
var select1 = document.getElementById('select1');
var select2 = document.getElementById('select2');
// Config
// Key: City
// Value: Array of city destinations
var config = {
'BOSTON, MA' : [ 'NEY YORK CITY, NY', 'WASHINGTON D.C.' ],
'FORT LEE, NJ' : [ ],
'HACKENSACK, NJ' : [],
'NEWARK, NJ' : [ ],
'NORTH ARLINGTON, NJ' : [],
'NEY YORK CITY, NY' : [ 'PHILADELPHIA, PA' ],
'PHILADELPHIA, PA' : [ ],
'WASHINGTON D.C.' : [ ]
}
// add item method
var addItemToSelect = function (select, label) {
var option = document.createElement('option');
option.textContent = label;
option.value = label;
select.appendChild(option);
}
// populate select 1
for (var city in config) {
addItemToSelect(select1, city);
}
select1.addEventListener('change', function () {
// get selection's destinations
var selection = this.options[this.selectedIndex].value;
var destinations = config[selection];
// clear select 2
select2.length = 0
// populate select 2
addItemToSelect(select2, '');
for (var key in destinations) {
addItemToSelect(select2, destinations[key]);
}
});
和HTML
<div class="input-group" style="margin-left: 20px;">
<div>
<label>From</label>
<select class="form-control" id="select1">
<option></option>
</select>
</div>
<div>
<label>To</label>
<select class="form-control" id="select2">
<option></option>
</select>
</div>
</div>
这是一个小提琴:https://jsfiddle.net/33tcpLon/
答案 1 :(得分:0)
首先,你不应该使用同名的2个ID。
例如,将第二个ID更改为“asd1”,您可以执行以下操作:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<style>
#MainPage {
padding-left: 230px;
padding-right: 230px;
}
body > #body-container {
height: auto;
min-height: 100%;
}
.pageData {
display: table;
table-layout: fixed;
width: 100%;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
.PageInner {
display: table-row;
}
.PageCard {
margin: 0 0 10px;
border: 0;
background: #fff;
box-shadow: 0 1px 2px rgba(0, 0, 0, .1);
-moz-box-sizing: border-box;
box-sizing: border-box;
}
.gridItem {
display: inline-block;
margin-right: 10px;
vertical-align: top;
width: 196px;
word-wrap: break-word;
}
#Pagebox {
border-bottom: 1px solid #e2e2e2;
padding-left: 18px;
padding-right: 18px;
}
.UL-Slider {
width: 100%;
overflow: visible;
position: relative;
left: 0;
white-space: nowrap;
font-size: 0;
vertical-align: top;
-moz-transition: left .3s ease-in-out;
-webkit-transition: left .3s ease-in-out;
transition: left .3s ease-in-out;
}
.MovieItem {
display: inline-block;
margin-right: 10px;
vertical-align: top;
width: 196px;
word-wrap: break-word;
}
.Video-CFix {
font-size: 11px;
color: #767676;
position: relative;
}
.LockUp-Thumbnail {
margin-bottom: 4px;
}
.VideoThumb {
font-size: 0;
}
.VideoTitle {
margin-right: 20px;
font-size: 13px;
margin-bottom: 1px;
max-width: 196px;
}
</style>
</head>
<body>
<div id="body-container">
<div id="MainPage">
<div class="pageData">
<div class="PageInner">
<div class="PageCard">
<div class="gridItem">
<div id="Pagebox">
<ul class="UL-Slider">
<li class="MovieItem">
<div class="Video-CFix">
<div class="LockUp-Thumbnail">
<div class="VideoThumb">
<img src="http://www.amusingtime.com/images/043/mr-bean-funny-face-expression-image-for-facebook.jpg"
width="196" alt="" height="110">
</div>
</div>
<div class="lockup-title">
<span class="VideoTitle">
<a href="#">Movie</a>
</span>
</div>
</div>
</li>
<li class="MovieItem">
<div class="Video-CFix">
<div class="LockUp-Thumbnail">
<div class="VideoThumb">
<img src="http://www.amusingtime.com/images/043/mr-bean-funny-face-expression-image-for-facebook.jpg"
width="196" alt="" height="110">
</div>
</div>
<div class="lockup-title">
<span class="VideoTitle">
<a href="#">Movie</a>
</span>
</div>
</div>
</li>
<li class="MovieItem">
<div class="Video-CFix">
<div class="LockUp-Thumbnail">
<div class="VideoThumb">
<img src="http://www.amusingtime.com/images/043/mr-bean-funny-face-expression-image-for-facebook.jpg"
width="196" alt="" height="110">
</div>
</div>
<div class="lockup-title">
<span class="VideoTitle">
<a href="#">Movie</a>
</span>
</div>
</div>
</li>
<li class="MovieItem">
<div class="Video-CFix">
<div class="LockUp-Thumbnail">
<div class="VideoThumb">
<img src="http://www.amusingtime.com/images/043/mr-bean-funny-face-expression-image-for-facebook.jpg"
width="196" alt="" height="110">
</div>
</div>
<div class="lockup-title">
<span class="VideoTitle">
<a href="#">Movie</a>
</span>
</div>
</div>
</li>
<li class="MovieItem">
<div class="Video-CFix">
<div class="LockUp-Thumbnail">
<div class="VideoThumb">
<img src="http://www.amusingtime.com/images/043/mr-bean-funny-face-expression-image-for-facebook.jpg"
width="196" alt="" height="110">
</div>
</div>
<div class="lockup-title">
<span class="VideoTitle">
<a href="#">Movie</a>
</span>
</div>
</div>
</li>
<li class="MovieItem">
<div class="Video-CFix">
<div class="LockUp-Thumbnail">
<div class="VideoThumb">
<img src="http://www.amusingtime.com/images/043/mr-bean-funny-face-expression-image-for-facebook.jpg"
width="196" alt="" height="110">
</div>
</div>
<div class="lockup-title">
<span class="VideoTitle">
<a href="#">Movie</a>
</span>
</div>
</div>
</li>
<li class="MovieItem">
<div class="Video-CFix">
<div class="LockUp-Thumbnail">
<div class="VideoThumb">
<img src="http://www.amusingtime.com/images/043/mr-bean-funny-face-expression-image-for-facebook.jpg"
width="196" alt="" height="110">
</div>
</div>
<div class="lockup-title">
<span class="VideoTitle">
<a href="#">Movie</a>
</span>
</div>
</div>
</li>
<li class="MovieItem">
<div class="Video-CFix">
<div class="LockUp-Thumbnail">
<div class="VideoThumb">
<img src="http://www.amusingtime.com/images/043/mr-bean-funny-face-expression-image-for-facebook.jpg"
width="196" alt="" height="110">
</div>
</div>
<div class="lockup-title">
<span class="VideoTitle">
<a href="#">Movie</a>
</span>
</div>
</div>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
抱歉,忘了添加onchange方法:
在您的第一个选择元素中:
function foo() {
var selectedElem = document.getElementById("asd");
var selectedText = e.options[e.selectedIndex].text;
var x = document.getElementById("asd1");
var option = document.createElement("option");
option.text = "Kiwi";
x.add(option);
}