有没有办法在Codeigniter的内置表格验证中禁止使用单词?

时间:2011-01-23 15:35:10

标签: php jquery codeigniter validation

O有一个表单,字段由jQuery预先填充。当用户点击该字段时,该字段会清空自己,并键入其信息。但是,如果他们不在每个字段中输入信息,则提交默认值。我想使用Codeigniter的内置验证来禁止用户创建名为“First Name”的帐户。

见:otis.team2648.com/auth/register

谢谢, 布雷克

3 个答案:

答案 0 :(得分:1)

您可以使用回调函数:

//你的规则

$this->form_validation->set_rules('first_name', 'required|callback__no_first_name');

//回调

function _no_first_name($str) {
    if ($str !== 'First Name') {
        return TRUE;
    }
    else
    {
        $this->form_validation->set_message('_no_first_name', 'You should not have "First Name as the first name"');
        return FALSE;
    }
}

答案 1 :(得分:1)

我会扩展Form_validation库并将其转换为更有价值的表单验证规则,您可以轻松地重复使用...

示例 - (更改您的CI版本的相关信息)

class MY_Form_validation extends CI_Form_validation {

    function __construct() {
        parent::CI_Form_validation();
    }

    function disallow_string($str,$word)
    {
        return ( strpos($str,$word) === FALSE ) ? TRUE : TRUE;
    }
}

将以上代码放在MY_Form_Validation.php

中的application/libraries

在您的验证中,只需使用像这样的规则

$this->form_validation->set_rules('first_name', 'required|disallow_string[First Name]');

请注意,您可以对所有字段使用相同的规则,就像我可以设想的其他用途一样。

答案 2 :(得分:0)

不要在字段中将默认文本写为值!使用这种结构:

<input type="text" name="uname" id="uname" placeholder="Your name" />

如果用户将焦点设置在此字段上,则文本消失。但如果用户什么都不插入,则不会提交任何值。