0

我有一个使用 jQuery ajax 提交的表单,并将其发送到一个名为 submit 的控制器函数,以验证并使用表单数据执行我需要执行的任何其他任务。当用户名不只包含小写字母和数字时,我试图找出为什么我的表单验证库没有显示错误。

$this->form_validation->set_rules('username', 'Username', 'trim|required|xss_clean|strtolower');

表单提交后的 POST 值:

username    TestingUSER

编辑:

据我所知,它可以正确地到达 php 服务器端。

PHP:

public function submit()
{
    $output_status = 'Notice';
    $output_title = 'Not Processed';
    $output_message = 'The request was unprocessed!';

    $this->form_validation->set_rules('username', 'Username', 'trim|required|xss_clean|strtolower');
    $this->form_validation->set_rules('password', 'Password', 'trim|required|xss_clean');
    $this->form_validation->set_rules('remember', 'Remember Me', 'trim|xss_clean|integer');

    if ($this->form_validation->run() == TRUE)
    {

    }
    else
    {
        $output_status = 'Error';
        $output_title = 'Form Not Validated';
        $output_message = validation_errors();
    }

    echo json_encode(array('output_status' => $output_status, 'output_title' => $output_title, 'output_message' => $output_message));
}

编辑2:

基于谢赫的回答。我收到回复说“无法访问与您的字段名称对应的错误消息”。它确实说标题的表单未验证,因此该消息不起作用。

public function check_username($str)
{
    if (preg_match('#[0-9]#', $str) && preg_match('#[a-z]#', $str)) 
    {
        return TRUE;
    }
    $this->form_validation->set_message('username', 'This is not have an accepted value!');
    return FALSE;
}

编辑 3:

我想要做的是让它报告存在验证错误,但没有 pnotify 响应中的特定错误。但是我确实希望它在表单元素下显示特定错误。

jQuery代码:

http://pastebin.com/1KehMJkh

登录表单:

http://pastebin.com/EfpBfbfN

4

1 回答 1

1

我认为您可以在控制器中使用回调函数

public function check_username($str)
{
    if (preg_match('#[a-z0-9]#', $str)) {
        return TRUE;
    }
    $this->form_validation->set_message('check_username', 'This is not have an accepted value!');
    return FALSE;
}

验证规则username

$this->form_validation->set_rules('username', 'Username', 'trim|required|xss_clean|callback_check_username');

你可能也喜欢这个

于 2012-12-17T20:02:38.097 回答