首页 > 解决方案 > Codeigniter set_select 不适用于表单验证

问题描述

我正在使用 codeigniter 表单验证来验证选择选项是否具有值。我在将所选选项的值传递给控制器​​时遇到问题,因此我创建了一个隐藏输入并使用 jquery 传递值 on_change。设置选择可以重新填充选择选项,但它不会将值重新传递给我的隐藏输入。我是新手,不知道最好的路线是什么?有没有办法在表单验证失败时将值从我的选择选项重新传递到隐藏输入?

这是我的看法:

$('#transfer_from_selector').on('change', function () {
var val = this.value;
$('#transfer_from_input').val(this.value);
});   

<select class="form-control" id="transfer_from_selector" name="transfer_from_selector">
                    <option value="" disabled="" selected="selected" class="">Transfer From</option>
                    <option value="1" <?php echo set_select('transfer_from_selector', 1); ?>class="">Richfield</option>
                    <option value="2" <?php echo set_select('transfer_from_selector', 2); ?>class="">Eagan</option>
</select>  

<input type="hidden" id="transfer_from_input" name="transfer_from_input" value=""> 

这是我的控制器:

$this->form_validation->set_rules('transfer_from_input', 'Transfer From', 'required|differs[transfer_to_input]');
$data = array(
    'transfer_from' => $this->input->post('transfer_from_input'),
);

标签: jquerycodeigniter

解决方案


无需编写隐藏字段。使用带有名称的 aaray 选择选项。试试这个我希望它会对你有所帮助。

<select class="form-control" id="transfer_from_selector" name="transfer_from_selector[]">
                    <option value="" disabled="" selected="selected" class="">Transfer From</option>
                    <option value="1" <?php echo set_select('transfer_from_selector', 1); ?>class="">Richfield</option>
                    <option value="2" <?php echo set_select('transfer_from_selector', 2); ?>class="">Eagan</option>
</select> 

推荐阅读