我有一个表单,其中有一个包含许多选项的选择字段。这些选项具有数值和选项标记之间的文本。我想做的是当我通过提交按钮发布表单时获取文本而不是值。
生成选择字段的视图:
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?
答案 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)
您可以自己进行选择而不使用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>
或者,你可以在javascript中制作丑陋的黑客:
$('#pos_select option').each(function(){
$(this).attr('value', $(this).text());
});
将每个选项的value
设置为等于其文字内容:http://jsfiddle.net/ursQY/