用户
 找回密码
 入住 CI 中国社区
搜索
查看: 4795|回复: 2
收起左侧

在select中设定值【已经解决】

[复制链接]
发表于 2009-11-4 10:59:51 | 显示全部楼层 |阅读模式
本帖最后由 cnbigfoot 于 2009-11-5 11:33 编辑

我有一张表单,其中有一个select菜单,我选中其中的一项后提交,因为该表单没有验证合格,又返回到表单页面。
我在表单中了set_select,但是返回的表单页面始终都不是我提交时选中的那一项,这是什么原因呢?

我的源代码如下:

form控制器:
PHP复制代码
<?php
class Form extends Controller {
 
function index()
{
  $this->load->helper(array('form', 'url'));
 
  $this->load->library('form_validation');
   
  $this->form_validation->set_rules('username', 'Username', 'required');
   
  if ($this->form_validation->run() == FALSE)
  {
   $this->load->view('myform');
  }
  else
  {
   $this->load->view('formsuccess');
  }
}
}
?>
复制代码

myform的view:
PHP复制代码
<html>
<head>
<title>My Form</title>
</head>
<body>
<?php echo validation_errors(); ?>
<?php echo form_open('form'); ?>
<h5>Username</h5>
<input type="text" name="username" value="<?php echo set_value('username'); ?>" size="50" />
<br />
<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>
<div><input type="submit" value="Submit" /></div>
</form>
</body>
</html>
 
复制代码

formsucuess的view:
PHP复制代码
<html>
<head>
<title>My Form</title>
</head>
<body>
<h3>Your form was successfully submitted!</h3>
<p><?php echo anchor('form', 'Try it again!'); ?></p>
</body>
</html>
 
复制代码

现在的问题是:如果我在下拉菜单中选择第二项,当username没有验证通过,再次回到form页面时,下拉菜单中默认选择的还是第一项,而不是我选择的第二项。
其实这就是用户手册中 表单验证类 中的例子。使用:
PHP复制代码
<input type="checkbox" name="mycheck[]" value="1" <?php echo set_checkbox('mycheck[]', '1'); ?> />
<input type="checkbox" name="mycheck[]" value="2" <?php echo set_checkbox('mycheck[]', '2'); ?> />
复制代码


PHP复制代码
<input type="radio" name="myradio" value="1" <?php echo set_radio('myradio', '1', TRUE); ?> />
<input type="radio" name="myradio" value="2" <?php echo set_radio('myradio', '2'); ?> />
复制代码

也是一样的,如果验证不能通过再次回到表单页面时,先前选择的数据都不能显示。

已经解决:
原因是要设定myselect的set_rules规则后,就可以了。
也就是再加上一条
$this->form_validation->set_rules('myselect', 'myselect', 'required');

这样如果其他的字段验证不成功,在返回表单页面,原来选中的select项就依然存在。

评分

参与人数 1威望 +5 收起 理由
trynews + 5 赞一个!

查看全部评分

发表于 2011-12-9 09:44:12 | 显示全部楼层
终于解决了,谢谢
发表于 2012-9-7 09:53:27 | 显示全部楼层
尽管都像你说的但我的还是不成功 什么可能原因??

本版积分规则