在CodeIgniter中验证失败后重置下拉列表值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在CodeIgniter中验证失败后重置下拉列表值相关的知识,希望对你有一定的参考价值。
我有一个非常简单的投票表。它包含一个用于输入ID的文本字段,然后是五个下拉列表。唯一完成的验证是在文本字段上,但是如果验证失败,则我希望所有下拉列表都保留其值。
例如,用户输入12345作为条目,然后从所有五个下拉菜单中选择选项A。 (默认为选项B。)如果12345验证失败,则在显示验证错误时,下拉菜单仍应设置为选项A。那没有发生。我正在使用表单助手的form_dropdown创建下拉菜单。有任何想法吗?如您所见,我尝试在名为q1的下拉列表中使用set_value,但此方法无效。验证本身起作用。
这是表格的代码:
<?php
$hidden = array('dot_judge_id' => $this->session->userdata('dot_judge_id'));
echo form_open('vote/create');
$entry_code_data = array(
'name' => 'entry_code',
'id' => 'entry_code',
'value' => set_value('entry_code')
);
echo form_hidden($hidden);
$score_options = array('1'=>'1 (lowest)', '2'=>'2','3'=>'3', '4'=>'4','5'=>'5 (highest)');
?>
<p><label for="entry_code">Entry code: </label><?php echo form_input($entry_code_data); ?></p>
<p><label for="q1">Question 1: </label><?php echo form_dropdown('q1', $score_options, set_value('q1')); ?></p>
<p><label for="q2">Question 2: </label><?php echo form_dropdown('q2', $score_options, ''); ?></p>
<p><label for="q3">Question 3: </label><?php echo form_dropdown('q3', $score_options, ''); ?></p>
<p><label for="q4">Question 4: </label><?php echo form_dropdown('q4', $score_options, ''); ?></p>
<p><label for="q5">Question 5: </label><?php echo form_dropdown('q5', $score_options, ''); ?></p>
<p><?php echo form_submit('submit', 'Submit vote'); ?></p>
<?php echo form_close(); ?>
<?php echo validation_errors('<p class="error">', '</p>');?>
我在CodeIgniter论坛上告诉我使用set_select,但是我认为我不能使用set_select,因为我没有写出选择框的各个值,也没有试图提供一个硬编码默认值。我需要将下拉列表重置为用户在运行表单验证之前选择的值。我正在使用form_dropdown函数,那么如何将实际选择的值传递给set_select的第二个参数?根据set_select文档,
第一个参数必须包含选择菜单的名称,第二个参数必须包含每个项目的值
this post上也有一条评论,说它使用set_value-echo form_dropdown('events', $options, set_value('events'), $firstItem);
。该评论获得三票赞成,所以我认为它对某些人有用,但对我没有任何帮助。这个问题已经一岁了;也许这适用于旧版本的CI,但不适用于最新版本的CI。无论如何,在使用form_dropdown创建下拉菜单时,有一种方法可以使“粘性”下拉菜单值具有,不是吗?我无法想象我需要做很长的路要走,并通过遍历值数组并分别回显每个选项行来创建下拉列表;首先,这种方式无法达到使用CI之类的目的。
请记住,set_value()
需要第二个参数,它是每个项目的值,因此您可以通过将$this->input->post('q1')
添加为第二个参数来使它起作用。
而不是:
<?php echo form_dropdown('q1', $score_options, set_value('q1')); ?>
您会写:
<?php echo form_dropdown('q1', $score_options, set_value('q1', $this->input->post('q1'))); ?>
希望有所帮助。
容易得多,
<select name="add_fields_type" id="add_fields_type">
<option value="">Please Select</option>
<option value="Input">Input</option>
<option value="Text Area">Text Area</option>
<option value="Radio Button">Radio Button</option>
<option value="Check Box">Check Box</option>
</select>
<script>
document.getElementById('select_status').value="<?php echo set_value('status'); ?>";
</script>
以上是关于在CodeIgniter中验证失败后重置下拉列表值的主要内容,如果未能解决你的问题,请参考以下文章
在 laravel 的 ajax 中验证失败时保留旧的选择值