【问题标题】:Drop-down menu based on the selection of radio button基于单选按钮选择的下拉菜单
【发布时间】:2012-10-27 13:36:13
【问题描述】:

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

【问题讨论】:

    标签: php javascript drop-down-menu


    【解决方案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 代码。

    【讨论】:

    • 你能不能加个例子,我真的不明白。
    • 但这需要刷新页面才能将值从单选按钮获取到函数?
    • 是的,除非您将函数嵌入到 ajax 调用中,否则页面必须经过刷新才能获得新的下拉列表。
    • ajax部分好做,但是需要选择一个js库,ajax调用实现就靠它了。
    • 那我只好用ajax了,因为我不想刷新页面。无论如何,非常感谢您的所有帮助,我很感激 :)。
    【解决方案2】:

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

    if (isset($_POST['checkbox1']) {
    
    echo '<select>...'
    
    } else if (isset($_POST['checkbox2']) {
    
    echo '<select>...'
    
    }
    

    【讨论】:

    • 感谢您的建议,我正在考虑这一点,但后来我想也许有一种更简单的方法可以使用 ajax 来实现。更少的代码和一切,但我会看看其他人的想法,然后再决定。
    • Ajax 只是隐藏了页面的刷新,但 PHP 逻辑保持不变。
    • 不刷新会很好,但我也可以使用 javaScript 来实现,所以我想这并不重要。
    【解决方案3】:

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

    display:block
    display:none
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-12-12
      • 2020-10-18
      • 2021-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多