0

我有四个单选按钮,我想根据所选单选按钮获取下拉菜单。如果我只是编写所有这些下拉菜单并根据选择显示它们是最好的,还是有办法使用 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 从数据库中获取值。因此,如果有人知道这样做的好方法,我将不胜感激。

4

3 回答 3

1

制作不同的下拉列表并添加一个 php 条件来检查单击了哪个单选按钮并显示该列表。

if (isset($_POST['checkbox1']) {

echo '<select>...'

} else if (isset($_POST['checkbox2']) {

echo '<select>...'

}
于 2012-11-07T13:29:32.693 回答
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 代码。

于 2012-11-07T14:10:54.143 回答
0

只需加载所有下拉菜单并显示用户之前使用 CSS 选择的菜单:

display:block
display:none
于 2012-11-07T13:30:14.787 回答