在codeigniter form_dropdown中添加禁用选项

时间:2011-07-23 01:02:05

标签: php codeigniter drop-down-menu

我正在尝试使用codeIgniter弄清楚如何在我的下拉列表中添加禁用选项。 CI新手,我试过谷歌搜索,但找不到答案。

我的下拉列表代码如下:

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

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

任何人都可以帮助我吗?感谢

7 个答案:

答案 0 :(得分: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的错误,因为它没有为下拉键/值执行任何转义或清理功能。同时,为了安全起见,请确保您的密钥和值不会来自任何基于用户的输入。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

如果你有一些静态选项,那么$ 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');

答案 3 :(得分:0)

只需将第四个param $ extra添加到您的下拉列表中,就像“禁用=已停用”这样的字符串,如https://codeigniter.com/user_guide/helpers/form_helper.html#available-functions中的CI文档中所述

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

答案 4 :(得分:0)

<?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

答案 5 :(得分:-1)

来自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。它的文本数量相同,而且您使用的功能较少。

答案 6 :(得分:-2)

<强>解决方案:

更改form_helper.php的第437个字符串:

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

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

并使用selected功能disabled。看起来像一个生命危机,但它的工作原理