我有四个单选按钮,我想根据所选的单选按钮获取下拉菜单。如果我只是编写所有这些下拉菜单并根据选择显示它们或者是否有办法使用ajax(因为下拉值来自数据库),这是最好的吗? 这是单选按钮:
<input type="radio" name="some" value="someValue1">
<input type="radio" name="some" value="someValue2">
<input type="radio" name="some" value="someValue3">
<input type="radio" name="some" value="someValue4">
以下是下拉列表:
<select name="reason">
<?php
$data = WorkReason::all();
foreach ($data as $d) {
?>
<option value="<?php echo $d->code; ?>"><?php echo $d->reason; ?></option>
<?php
}
?>
</select>
我使用php ActiveRecords从数据库中获取值。 因此,如果有人知道这样做的好方法,我将不胜感激。
答案 0 :(得分:1)
制作不同的下拉列表并添加php条件以检查单击了哪个单选按钮并显示该列表。
if (isset($_POST['checkbox1']) {
echo '<select>...'
} else if (isset($_POST['checkbox2']) {
echo '<select>...'
}
答案 1 :(得分:1)
制作不同的下拉列表并添加php条件以检查单击了哪个单选按钮并显示该列表。 您可以使用数组为您选择正确的代码。
$radio2select = array ("someValue1" => "<select>..." , "someValue2" => "...", "someValue3" => "..."); // you get the idea
echo $radio2select($_REQUEST['radio']) ;
使用数组是一种避免使用switch语句的技巧,并且在预先计算了下拉框时它可以正常工作。
否则,创建一个构建下拉框的函数:
function select_reasons($which){
<select name="reason">
<?php
$data = WorkReason::all(array('conditions' => array ( 'reason = ?' => $which)));
foreach ($data as $d) {
?>
<option value="<?php echo $d->code; ?>"><?php echo $d->reason; ?></option>
<?php
}
?>
</select>
}
然后只需传递$_REQUEST[‘radio']
即可生成相应的下拉列表。
请注意,我不知道您的数据库架构,但我认为它应该让您入门。
此外,此代码可以在常规Get或Post上运行,也可以嵌入到ajax往返中(这取决于您使用的框架)。 另一个优点是,与基于CSS的解决方案相比,页面中只包含必要的html代码。
答案 2 :(得分:0)
只需加载所有下拉菜单,然后使用CSS显示用户之前选择的菜单:
display:block
display:none