我有两个日期字段来收集用户的数据。需要使用codeigniter表单验证类来验证它。
场景:
>
第一个日期字段可以为空
第二个日期字段不能为空
第一个日期字段不应大于今天的日期
第二个日期字段应大于第一个日期字段
美元这个-
美元这个-
回调函数是:
function check_equal_less($second_field,$first_field)
{
if ($second_field <= $first_field)
{
$this->form_validation->set_message('check_equal_less', 'The First &/or Second fields have errors.');
return false;
}
else
{
return true;
}
}
在/application/controllers/Welcome controller中,我添加了一个handler函数,并设置了验证规则和自定义回调(并定义了此控制器函数的自定义路由$route['action\u page']='Welcome/dates\u validation';
):
public function dates_validation(){
$this->load->helper(array('form', 'url'));
$this->load->library('session');
$this->load->library('form_validation');
$this->form_validation->set_error_delimiters('<div class="alert alert-danger">', '</div>');
$this->form_validation->set_rules('first_field', 'First date', 'trim|callback_check_equal_less');
$this->form_validation->set_rules('second_field', 'Second date', 'trim|required|callback_check_greater_then['.$this->input->post('first_field').']');
$this->session->set_flashdata('result', '');
if ($this->form_validation->run() == FALSE)
{
$this->session->set_flashdata('result', validation_errors());
}
else{
$this->session->set_flashdata('result', '');
}
$this->load->view('forms');
}
public function check_equal_less($date){
$today = strtotime(date("Y-m-d"));
$first_date = strtotime($date);
if ( ($date != "") && ($first_date > $today) )
{
$this->form_validation->set_message('check_equal_less', 'The First date can not be greater than today!');
return false;
}
else
{
return true;
}
}
public function check_greater_then($second_date, $first_date){
if ( ($first_date != "") && ($second_date != "") && (strtotime($first_date) > strtotime($second_date)) )
{
$this->form_validation->set_message('check_greater_then', 'Second date field should be greater than First date field!');
return false;
}
else
{
return true;
}
}
此控制器的视图文件:可选地,我加载了Boostrap,因为我用警报格式化了消息
<div id="container">
<h1>Date validations</h1>
<?php echo $this->session->flashdata('result'); ?>
<form action="/action_page" method="post">
<label for="first_field">First date:</label><br>
<input type="date" id="first_field" name="first_field" value="<?php echo set_value('first_field'); ?>"/></br>
<label for="second_field">Second date:</label><br>
<input type="date" id="second_field" name="second_field" value="<?php echo set_value('second_field'); ?>"/></br></br>
<input type="submit" value="Submit">
</form>
</div>
如果你正在采取适当的日期只是转换它与strtotime然后比较将很容易
这里是修改后的函数
function check_equal_less($second_field,$first_field)
{
if (strtotoime($second_field) <= strtotime($first_field))
{
$this->form_validation->set_message('check_equal_less', 'The First &/or Second fields have errors.');
return false;
}
else
{
return true;
}
}
我有两个数字字段来收集用户的数据。需要使用codeigniter表单验证类对其进行验证。 条件: 第一个字段可以为零 第二字段不能为零 第一字段不应等于第二字段 第二字段应大于第一字段 目前我使用 美元这个- 美元这个- 但是,如何验证上述第3和第4个条件? 提前谢谢。
我正在尝试设置一个验证来比较两个日期。一个日期应该比另一个日期短。 此外,我为我的两个约会都创建了一个自定义约束。但问题是,我的注释接口无法处理非原始数据类型。 这是我的代码:(我知道这是错误的,但如果我展示我的源代码,也许你可以理解我的问题) 豆子: 注释界面: 所以这里有一个问题:我试图将类型放入类型。但是,如果我将我的和声明为,则存在一个问题: 还有其他方法来比较两次约会吗? 我错过了什么?
您如何验证有效的 HTML JavaScript 即使我对表单中的其他字段使用相同的方法,对空字段的验证也不起作用。
问题内容: 我试图建立一个PHP日期验证(MM / DD / YYYY),但我遇到了问题。这是我得到的样本: 问题答案: 您可以使用checkdate。例如,如下所示: 一种更偏执的方法,不会盲目相信输入内容:
我正在尝试设置php日期验证(MM/DD/YYYY),但我遇到了问题。以下是我得到的一个示例:
问题内容: 我正在写一个shell脚本,并且对为什么我的日期验证代码不起作用感到困惑。我针对发现的类似问题尝试了以下解决方案,但is_valid始终设置为1: 如何正确验证日期格式?只有格式为MM / DD / YYYY的日期才有效 我也尝试了以下解决方案:Linux Bash-日期格式,但它也总是拒绝日期。 问题答案: Mac OS X随附的BSD 不支持该选项(或者,它用于完全不同的东西)。安