【问题标题】:Adding disabled option in codeigniter form_dropdown在 codeigniter form_dropdown 中添加禁用选项
【发布时间】:2011-10-11 11:20:45
【问题描述】:

我试图弄清楚如何使用 codeIgniter 在我的下拉列表中添加禁用选项。刚接触 CI,我尝试用谷歌搜索了一下,但找不到答案。

我的下拉代码如下所示:

    echo form_dropdown('category', array('0' => 'Choose a category...')  + $categories, '0');

这为我提供了一个下拉列表,其中包含变量 $categories 中的所有选项,顶部带有“选择一个类别...”(值 0)。现在如何使第一个禁用?我知道如何让它选择一个特定的,我在这里设置它。

谁能帮帮我?谢谢

【问题讨论】:

    标签: php codeigniter drop-down-menu


    【解决方案1】:

    我知道这是一篇旧帖子,但在当前版本的 CI 中,我可以通过将 " disabled="disabled 附加到我想禁用的选项的键来做一些(类似 sql 注入的)技巧。

    $categories['0'] = '(Select Category)';
    $categories['1'] = 'Category 1';
    $categories['2" disabled="disabled'] = 'Restricted Category';
    $categories['3'] = 'Category 3';
    
    echo form_dropdown('category', $categories, '0');
    

    我不确定这是否是 CI 的 form_helper 的错误,因为它不会对下拉键/值执行任何转义或清理功能。同时,为了安全起见,请确保您的键和值不会来自任何基于用户的输入。

    【讨论】:

    • 在 CI 3.1.9 中不起作用,因为 $ 键将被转义。
    【解决方案2】:

    如果您仍想使用 form_helper,您始终可以扩展帮助文件并使“禁用”标签可用。创建 MY_Form_helper.php 并将其放在 helper 目录下,然后在该自定义助手中定义函数 form_dropdown ,然后它将覆盖表单助手行为。

    【讨论】:

      【解决方案3】:

      如果你有一些静态选项,只有 $options 变量也可以是一个简单的字符串,包含 html 格式的选项,像这样:

      $options = "
      <option value=0 disabled>Select Category</option>
      <option value=1>Category 1</option>
      <option value=2>Category 2</option>";
      
      echo form_dropdown('category', $options, '0');
      

      【讨论】:

        【解决方案4】:

        只需将第四个参数 $extra 作为字符串添加到下拉列表中,如 CI Docs https://codeigniter.com/user_guide/helpers/form_helper.html#available-functions 中所述的“disabled=disabled”之类的字符串

        echo form_dropdown('category', array('0' => 'Choose a category...')  + $categories, '0', 'disabled=disabled');
        

        【讨论】:

        • 这使得 &lt;select&gt; 被禁用,而不仅仅是 OP 指定的特定 &lt;option&gt;
        【解决方案5】:
        <?php echo validation_errors(); ?>
        <?php echo form_open(''); ?>
        
        <?php echo form_label('Gender:'); ?>
        <?php echo form_dropdown(array('id'=>'selectinform', 'name'=>'gender', 'options'=>array('1'=>'Select', '2'=>'2','3'=>'3'), 'selected'=>'1')); ?>
        
        <?php echo form_submit(array('id'=>'submit', 'value'=>'submit')); ?>
        <?php echo form_close(); ?>
        
        <script>
            $(document).ready(function(){
                $("#selectinform option:first").attr('disabled', 'disabled');
            });
        </script>
        

        Result - IMG

        【讨论】:

        • 使用js应该是最后的手段。此答案缺少教育解释。
        【解决方案6】:

        来自http://codeigniter.com/user_guide/helpers/form_helper.html 的 CI 用户指南:

        如果您希望开头包含其他数据,例如 id 属性或 JavaScript,您可以将其作为字符串传递到第四个参数中:

        所以你的代码变成了:

            echo form_dropdown('category', array('0' => 'Choose a category...')  + $categories, '0', 'disabled="disabled"');
        

        但是,除非您是 PHP 狂热者或通过表单助手使用 CSRF 保护,否则我只会自己输入表单 html。它是相同数量的文本,您使用的功能更少。

        【讨论】:

        • 感谢您的回复。通过在末尾添加 'disabled="disabled"',整个选择列表将变为禁用状态。我只想禁用第一个选项(值 0),这样您就无法选择“选择类别...”选项。是的,也许我应该自己输入表格,除非有解决办法。
        • Try option groups, however, they are not visible when the select is not open: w3schools.com/tags/tag_optgroup.asp
        • 我做了以下事情:我不给第一个选项一个值''并使用表单验证库来使选择一个必填字段。
        【解决方案7】:

        解决方案:

        更改form_helper.php的第437串:

        来自

        .(in_array($key, $selected) ? ' selected="selected"' : '').’>'
        

        .(in_array($key, $selected) ? ' disabled="disabled"' : '').’>'
        

        并使用selected 功能作为disabled。看起来像个救生员,但它确实有效

        【讨论】:

        • 与其修改核心代码,不如在前端注入html或使用javascript。 $('select[name=yourname]').prepend('');
        猜你喜欢
        • 1970-01-01
        • 2011-07-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-19
        • 1970-01-01
        • 1970-01-01
        • 2015-11-13
        相关资源
        最近更新 更多