我如何从CodeIgniter的选择选项中获得文本值


How I get the text instead value from a select option in CodeIgniter

我有一个表单,其中有一个选择字段与许多选项。这些选项具有数值和选项标记之间的文本。我想做的是获取文本而不是值,当我通过提交按钮发布表单。

生成select字段的视图:

echo form_dropdown('pos', $pos_options, '100', 'id="pos_select" class="form_input"'); 

生成的select部分:

<select name="pos" id="pos_select" class="form_input">
    <option value="0">about_history_title</option>
    <option vlaue="1">about_history</option>
</select>

提交表单时,通过控制器(text.php)调用适当的模型:

text.php -> insert_text()

$this->admin_text_model->insert_text();

admin_text_model.php

public function insert_text()
{
    $data = array(
        'tx_page' => $this->input->post('page'),
        'tx_pos' => $this->input->post('pos'),
        'tx_body' => $this->input->post('add_text')
    );
    return $this->db->insert('text', $data);
}

是否有一种方法,我可以在$this->input->post('pos')中获得选项标签中的文本?

可能是这样的:

'tx_pos' => $this->input->post('pos')->text?

不,<option>标签内的文本永远不会提交。这就是HTML的工作原理。

必须在value属性中设置需要检索的值。

试试这个不要把值赋给option tag:

<select name="pos" id="pos_select" class="form_input">
    <option>about_history_title</option>
    <option>about_history</option>
</select>

它将返回选项文本

  1. 您可以自己进行选择,而不使用CI帮助器。这样,您就可以完全控制输出内容和输出位置:

    <select name="pos" id="pos_select" class="form_input">
      <?php foreach($pos_options as $option):?>
        <option value="<?php echo htmlentities($option);?>"><?php echo $option;?></option>
      <?php endforeach;?>
    </select>
    
  2. 或者,你可以在javascript中做一个丑陋的hack:

    $('#pos_select option').each(function(){
       $(this).attr('value', $(this).text()); 
    });
    

设置每个选项的value等于其文本内容:http://jsfiddle.net/ursQY/