一个普通的JavaScript的方法是可行的,但它确实需要一个相对上最新的浏览器,由于使用的document.querySelector()
:
function selectToggle(source, map) {
var opts = source.options,
index = source.selectedIndex,
id, cur;
for (var i = 0, len = opts.length; i < len; i++){
id = map[opts[i].value];
cur = document.querySelector('#' + id);
cur.style.display = i === index ? 'inline-block' : 'none';
document.querySelector('label[for="' + id + '"]').style.display = i === index ? 'inline-block' : 'none';
}
}
var el = document.getElementById('type'),
map = {
1: 'aairport',
2: 'dairport'
};
el.onchange = function() {
selectToggle(this, map);
};
JS Fiddle demo。
上述耦合于HTML:
<label for="type">Transfer Type</label>
<select name="type" id="type">`
<option value="1">Airport to Resort</option>
<option value="2">Resort to Airport</option>
</select>
<label for="aairport">Arrival Airport</label>
<select name="aairport" id="aairport">
<option value="1">X Airport</option>
<option value="2">Y Airport</option>
</select>
<label for="dairport">Departure Airport</label>
<select name="Dairport" id="dairport">
<option value="1">X Airport</option>
<option value="2">Y Airport</option>
</select>
<label for="resort">Arrival Resort</label>
<select name="resort" id="resort">
<option value="1">Hilton Paris</option>
<option value="2">Sheraton Paris</option>
</select>
而CSS:
label, select {
display: inline-block;
float: left;
box-sizing: border-box;
margin: 0 0 0.5em 0;
}
select + label {
clear: left;
}
label {
width: 8em;
margin-right: 0.5em;
text-align: right;
}
label::after {
content:': ';
}
#dairport,
label[for=dairport] {
display: none;
}
使用jQuery(以证明使用库的相对简单),它的略微简化的:
var el = document.getElementById('type'),
map = {
1: 'aairport',
2: 'dairport'
};
$('#dairport, label[for="dairport"]').hide();
$('#type').change(function(){
var that = this;
$('.toggles').toggle(function(){
var self = this,
test = map[that.selectedIndex + 1];
return (this.id && this.id == test) || (this.htmlFor && this.htmlFor == test);
});
})
JS Fiddle demo。
略有修改HTML添加一个类名:
<label for="type">Transfer Type</label>
<select name="type" id="type">`
<option value="1">Airport to Resort</option>
<option value="2">Resort to Airport</option>
</select>
<label for="aairport" class="toggles">Arrival Airport</label>
<select name="aairport" id="aairport" class="toggles">
<option value="1">X Airport</option>
<option value="2">Y Airport</option>
</select>
<label for="dairport" class="toggles">Departure Airport</label>
<select name="Dairport" id="dairport" class="toggles">
<option value="1">X Airport</option>
<option value="2">Y Airport</option>
</select>
<label for="resort">Arrival Resort</label>
<select name="resort" id="resort">
<option value="1">Hilton Paris</option>
<option value="2">Sheraton Paris</option>
</select>
参考文献:
这是一个JavaScript的工作,而不是PHP:一旦用户的浏览器获得了页面,PHP就无法进一步访问或无法与其进行交互。所以我们需要知道您是否能够接受JavaScript解决方案。 –
javascript对我来说可以。 – user2391166