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