如何在Codeigniter中验证时间输入

bla*_*elt 1 codeigniter codeigniter-2

我有一个表单中的文本框输入时间,我用来检查验证使用jquery.但现在我想使用codeigniter的内置验证系统检查文本框的验证.请您告诉我如何使用codeigniter的内置验证系统验证时间输入?

这是我使用jquery如何使用它的代码:

<script type="text/javascript">

$().ready(function() {

$.validator.addMethod("time", function(value, element) {  
return this.optional(element) || /^(([0-1]?[0-2])|([2][0-3])):([0-5]?[0-9])\s(a|p)m?$/i.test(value);  
}, "Enter Valid Time");

    $("#theForm").validate({
            rules: {
                    time: "required time",
            },

    });

 });

</script>
Run Code Online (Sandbox Code Playgroud)

这是html

<input class="time" type="text" name="time1" size="15">
Run Code Online (Sandbox Code Playgroud)

dan*_*eth 5

或许这样的事情

// Validation rule in controller
$this->form_validation->set_rules('time', 'time', 'trim|min_length[3]|max_length[5]|callback_validate_time');
Run Code Online (Sandbox Code Playgroud)

和一个回调:

public function validate_time($str)
{
//Assume $str SHOULD be entered as HH:MM

list($hh, $mm) = split('[:]', $str);

if (!is_numeric($hh) || !is_numeric($mm))
{
    $this->form_validation->set_message('validate_time', 'Not numeric');
    return FALSE;
}
else if ((int) $hh > 24 || (int) $mm > 59)
{
    $this->form_validation->set_message('validate_time', 'Invalid time');
    return FALSE;
}
else if (mktime((int) $hh, (int) $mm) === FALSE)
{
    $this->form_validation->set_message('validate_time', 'Invalid time');
    return FALSE;
}

return TRUE;
}
Run Code Online (Sandbox Code Playgroud)