1

当验证失败时,我在 CodeIgniter 中保留表单值时遇到了一个奇怪的错误。我在一个表单中使用了许多字段,其中一个是电子邮件。

我已经实现了电子邮件的验证规则如下:

$this->form_validation->set_rules('email','E-Mail',
'trim|required|xss_clean|is_unique[user.user_email]|callback_validateEmail');

validateEmail功能如下:

 function validateEmail($email){
        $this->load->helper('email');
        if((!valid_email($email))){
            $this->form_validation->set_message('validateEmail',
              'The E-Mail you entered is invalid');
            return false;
        }
    }

在表单中,我对电子邮件字段使用以下代码:

<td align="left">
   <input type="text" name="email" id="email" 
          value="<?php echo set_value('email');?>">
</td>

发生的情况是,当用户输入无效的 E-Mail 值(如 "abc123" 或 "abc123@" )时,将保留 E-Mail 值。但是,当用户输入正确的电子邮件地址时,例如“abc@yahoo.com”,并且由于其他字段中的错误而导致表单验证失败,则电子邮件字段的值不会被保留并消失。

我不知道为什么这会失败。有人可以请一些光吗?

先感谢您!

4

1 回答 1

1

对于有效的电子邮件,该函数未返回 true。

尝试在电子邮件有效时返回 true。

function validateEmail($email){
    $this->load->helper('email');
    if((!valid_email($email))){
    $this->form_validation->set_message('validateEmail','The E-Mail you entered is invalid');
    return false;
    }
return true;
 }
于 2013-04-09T20:55:29.667 回答