如何在值为动态时基于第一个选择列表选项更改第二个选择列表?
我有车辆搜索过滤器PHP网页,其中有2种类型的车辆是房车和露营,也有两个选择如何在值为动态时基于第一个选择列表选项更改第二个选择列表?
<div class="fields">
<p>Vehicle Type</p>
<select class="car" name="car_type" id="car_type">
<option value="0">Select Vehicle</option>
<?php if(count($vehicleType) > 0){
foreach($vehicleType as $vt){ ?>
<option value="<?php echo $vt ?>" <?=isset($_GET['car_type'])&&$_GET['car_type']==$vt?'selected':'';?> ><?php echo $vt ?></option>
<?php }
} ?>
</select>
</div>
<div class="fields">
<p>Total No. of Passengers*</p>
<select class="half" name="passengers" id="passengers">
<option>No. of Passengers</option>
<option <?php if(@$_REQUEST['passengers'] == 1){?>selected<?php }?>>1</option>
<option <?php if(@$_REQUEST['passengers'] == 2){?>selected<?php }?>>2</option>
<option <?php if(@$_REQUEST['passengers'] == 3){?>selected<?php } ?>>3</option>
<option <?php if(@$_REQUEST['passengers'] == 4){?>selected<?php }?>>4</option>
<option <?php if(@$_REQUEST['passengers'] == 5){?>selected<?php }?>>5</option>
<option <?php if(@$_REQUEST['passengers'] == 6){?>selected<?php }?>>6</option>
<option <?php if(@$_REQUEST['passengers'] == 7){?>selected<?php }?>>7</option>
<option <?php if(@$_REQUEST['passengers'] == 8){?>selected<?php }?>>8</option>
</select>
</div>
我怎么做,用jQuery或PHP,如果我选择“RV”在首先选择?第二个选择会让我看到8位乘客。如果我的第一选择选择露营车,第二个选择会告诉我5名乘客..
我可能会做一些沿着这些路线:
<?php
$number_of_passengers = 8;
if(!empty($_REQUEST['car_type'])) {
$number_of_passengers = $_REQUEST['car_type'] == 'Campervans' ? 5 : 8;
}
$passengers = 0;
if(!empty($_REQUEST['passengers'])){
$passengers = (int) $_REQUEST['passengers'];
}
?>
<select class="car" name="car_type" id="car_type">
<option value="0">Select Vehicle</option>
<option value="RV/Motorhome">RV/Motorhome</option>
<option value="Campervans">Campervans</option>
</select>
<select class="half" name="passengers" id="passengers">
<option>No. of Passengers</option>
<?php
for($i = 1; $i <= $number_of_passengers; $i++) {
?>
<option
<?php
if($i == $passengers) {
echo ' selected ';
}
?>
>
<?php echo $i ?>
</option>
<?php
}
?>
</select>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script>
$('#car_type').change(function() {
$("#passengers").children().removeAttr("selected");
if ($(this).val() === 'Campervans') {
$('#passengers option:nth-child(n+7)').hide();
} else {
$('#passengers option').show();
}
});
</script>
有这样做的更简洁的方式,但是这应该成为为了解决这个问题。
几点注意有关PHP:
看我怎么检查
$_REQUEST
键可使用empty - 这避免了使用@
这通常不是一个好主意。我使用的是循环呼应乘客的选项中进行选择,以避免重复的代码输入,因为说出来8次是枯燥的;-)
希望这有助于!
谢谢,但它在旅客领域也没有显示任何东西,请检查我更新的问题,让你更好地理解 –
@NeerajMishra - 我编辑了实例化'$ number_of_passengers'的代码。让我知道现在是否适合你。 – Bananaapple
解析错误:语法错误,意想不到的'if'(T_IF)在C:\ xampp \ htdocs \ Vehicle \ index.php上第150行 –
是的,你需要添加JavaScript代码。 将下面的代码插入你的页面,并检查这是你想要的?
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script type="text/javascript">
$('.car').on('change', function(){
if($(this).val() === 'RV/Motorhome'){
$('.half').find('option').show()
}else if($(this).val() === 'Campervans'){
$('.half').find('option').slice(6).hide();
}
})
</script>
,但它仍然显示8位乘客在选择bos ..离线想显示5 –
好吧我得到它请检查更新 –
现在它shopws只有1 –
是的,你需要编写JavaScript代码。 –