2
<select style="width:25%;" name='state' <?php if(form_error('state') != '') {  echo 'id=error'; } ?>>
<option value=''>State</option>
 <?php  foreach($states->result() as $row)
 {
 echo "<option value='$row->state_name'>". $row->state_name."</option>";
 }  ?>
</select>

嗨,我在上面的代码中遇到了问题,请帮助我,set_value 对我不起作用,表单验证失败后下拉列表不填充,提前谢谢或

做这样的事情,这里的目标是隐藏的价值。现在如何将目标值设置为下拉值(选项值)

  <script>
    window.onload = function (){
    target=document.getElementById('target').value;
        if(target.length!=''){
   // document.getElementByName('state').value=target;
        }
    }
    </script>
4

7 回答 7

12

根据手册:

<select name="myselect">
        <option value="one" <?php echo  set_select('myselect', 'one', TRUE); ?> >One</option>
        <option value="two" <?php echo  set_select('myselect', 'two'); ?> >Two</option>
        <option value="three" <?php echo  set_select('myselect', 'three'); ?> >Three</option>
</select>

在你的情况下

<select style="width:25%;" name='state' <?php if(form_error('state') != '') {  echo 'id=error'; } ?>>
<option value=''>State</option>
 <?php  foreach($states->result() as $row)
 {
 echo "<option value='$row->state_name' " . set_select('state', $row->state_name) . " >". $row->state_name."</option>";
 }  ?>

</select>

[更新]

<select style="width:25%;" name='state' <?php if(form_error('state') != '') {  echo 'id=error'; } ?>>
    <option value=''>State</option>
     <?php  
$defaultvalue = 'Nigeria'; //Please set default value here when nothing is selected before submit - change Nigeria
foreach($states->result() as $row)
     {
     echo "<option value='$row->state_name' " . set_select('state', $row->state_name, ((!isset(set_select('state', $row->state_name)) &&  ($row->state_name == $defaultvalue) ) ? TRUE : FALSE )) . " >". $row->state_name."</option>";
     }  ?>


</select>

如果您不想设置默认值,只需从 set_select 中删除 TRUE

如果您使用菜单,此功能允许您显示已选择的菜单项。第一个参数必须包含选择菜单的名称,第二个参数必须包含每个项目的值,第三个(可选)参数允许您将项目设置为默认值(使用布尔值 TRUE/FALSE)。

于 2013-03-13T01:36:20.550 回答
4

如果您使用表单助手功能,您可以执行以下操作。

form_dropdown('name', $options, set_value('name', 'default'))

set_value如果上次提交了带有“名称”的帖子,将选择选项值。如果没有,它将使用“默认”值设置它。

于 2013-03-13T03:48:02.127 回答
2

为什么不只使用 post 值?

echo form_dropdown('name', $options, $this->input->post('name'));
于 2013-05-08T15:37:39.733 回答
1

在这里,我们有一个更好的方法来在 Codeigniter 中运行 FALSE 表单验证后填充选择值。这是代码片段。

以下是我的控制器。

function index() {
    $this->load->view('welcome_message');
}

function form_validation() {
    $this->load->library('form_validation');
    $this->form_validation->set_rules('name', 'Name', 'trim|required');
    $this->form_validation->set_rules('gender', 'Gender', 'trim|callback_check_if_gender_selected');

    if ($this->form_validation->run() == FALSE) {
        $this->index();
    } else {
        $this->load->view('validation_passed');
    }
}

function check_if_gender_selected($value) {
    if ($value == "0") {
        $this->form_validation->set_message('check_if_gender_selected', 'Please Select Gender');
        return FALSE;
    } else {
        return TRUE;
    }
}

我的观点

  1. 表单视图 -(注意:我尝试粘贴我的代码,但粘贴时出现问题,所以我在这里证明我的代码的图片。单击图像以更好地查看代码。)

表单查看代码

验证通过视图

Welcome Validation Passed.

<?php echo "<br />" . "Name Value = " . set_value('name') . "<br />"; ?>
<?php echo "Gender Value = " . set_value('gender'); ?>
于 2016-12-07T16:07:49.280 回答
0

您应该使用set_select(),而不是set_value(). 除非您的表单验证根本没有触发..

<select style="width:25%;" name='state' <?php if(form_error('state') != '') {  echo 'id=error'; } ?>>
<option value=''>State</option>
 <?php  foreach($states->result() as $row)
 {
 echo '<option value="$row->state_name" ' . set_select('state', $row->state_name) . '>'. $row->state_name."</option>";
 }  ?>
</select>

让我知道这是否仍然不起作用,这可能与表单验证未触发有关(除非id="error"正在显示)。

于 2013-03-12T23:38:18.297 回答
0
    <select style="width:25%;" name='state' <?php if(form_error('state') != '') {  echo 'id=error'; } ?>>
    <option value=''>State</option>
     <?php  foreach($states->result() as $row)
     {
     echo "<option value='$row->state_name' " . set_select('state', $row->state_name) . " >". $row->state_name."</option>";
     }  ?>

    </select>

这对我有用。感谢@jornsen 的回答。

于 2013-03-14T10:14:53.917 回答
-1
 <option value="<?= $row->state_name ?>" ><?= $row->state_name ?></option>
于 2013-03-12T17:59:24.870 回答