我如何从CodeIgniter中的选择选项获取文本而不是值

时间:2014-05-30 05:45:56

标签: php forms codeigniter post

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

生成选择字段的视图:

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

生成的选择部分:

<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 - &gt; 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-&gt; input-&gt; post(&#39; pos&#39;)中获取选项标签内的文字?

也许是这样的:

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

3 个答案:

答案 0 :(得分:4)

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

您必须在value属性中设置需要检索的值。这就是它们的用途。

答案 1 :(得分:1)

请尝试将此值分配给选项标记:

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

它将返回选项文本。

答案 2 :(得分:0)

  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中制作丑陋的黑客:

    $('#pos_select option').each(function(){
       $(this).attr('value', $(this).text()); 
    });
    
  3. 将每个选项的value设置为等于其文字内容:http://jsfiddle.net/ursQY/