【问题标题】:2 date input validation php with condition2 带条件的日期输入验证php
【发布时间】:2023-03-10 22:14:01
【问题描述】:

我想验证codeigniter中输入的2个日期,条件是,如果结束日期大于开始日期,会出现警告[javascript警告什么的]或者无法输入数据

我的表格是这样的,

<h1><?php echo $title; ?></h1>
<form action="<?= base_url(); ?>index.php/admin/kalender/buat" method="post" enctype="multipart/form-data" name="form" id="form">
<?php
echo "<p><label for='IDKategori'>Tingkatan Pimpinan :</label><br/>";
echo form_dropdown('IDKategori', $kategori) . "</p>";

echo "<label for='ptitle'>Kegiatan / Lokasi :</label><br/>";
$data = array('class' => 'validate[required] text-input', 'name' => 'judul', 'id' => 'ptitle', 'size' => 80);
echo form_input($data);

echo "<p><label for='long'>Uraian Kegiatan / Keterangan / Catatan :</label><br/>";
$data = array('class' => 'validate[required] text-input', 'name' => 'konten', 'rows' => '13', 'cols' => '60', 'style' => 'width: 60%');
echo form_textarea($data) . "</p>";

echo "<p><label for='ptitle'>Waktu Mulai :</label><br/>";
$data = array('class' => 'validate[required] text-input', 'name' => 'TanggalMulai', 'id' => 'basic_example_1');
echo form_input($data) . "</p>";

echo "<p><label for='ptitle'>Waktu Akhir :</label><br/>";
$data = array('class' => 'validate[required] text-input', 'name' => 'TanggalAkhir', 'id' => 'basic_example_2');
echo form_input($data) . "</p>";

echo form_submit('submit', 'Tambah Even');
?>
&nbsp;&nbsp;<input type="button" value="Kembali" onClick="javascript: history.go(-1)" />

如何在“Waktu Akhir & Waktu Mulai”表格中验证?

【问题讨论】:

  • 你想使用 javascript OR jquery 还是 CI 验证?
  • 任何东西,我都没有吃过
  • 您应该同时使用服务器端 (CI) 和客户端 (jquery) 验证,以快速响应用户输入和安全的应用程序

标签: php codeigniter date validation


【解决方案1】:

试试这个。它是通过使用 CI 验证库。 它使用回调类型的验证。

把它放在if(isset($_POST['submit_button_name'])) {} 部分。 首先,加载验证数组,

$validation = array(
  array('field' => 'startDate', 'label' => 'StartDate', 'rules' => 'required|callback_compareDate'),
  array('field' => 'endDate', 'label' => 'endDate', 'rules' => 'required|callback_compareDate'),
);

然后加载CI验证库为,

$this->form_validation->set_rules($validation);
$this->form_validation->set_message('required', '%s is required.');

这是回调函数。

function compareDate() {
  $startDate = strtotime($_POST['startDate']);
  $endDate = strtotime($_POST['endDate']);

  if ($endDate >= $startDate)
    return True;
  else {
    $this->form_validation->set_message('compareDate', '%s should be greater than Contract Start Date.');
    return False;
  }
}

“必填”验证使字段必须填写某些内容。 在这种情况下,回调函数比较日期,如果开始日期小于起始日期,则进一步处理表单,否则标记错误。

【讨论】:

  • 函数放在哪里?
  • 我仍然对位于的脚本感到困惑
  • 看,除了方法定义,(最后的代码部分),把它上面的所有东西放在 if(isset($_POST['submit'])){};然后把方法定义放在最后。
  • 我上面的脚本怎么安装
【解决方案2】:

同时,如果你想在 Jquery 中使用,你可以使用它。

var startDate = new Date($('#startDate').val());
var endDate = new Date($('#endDate').val());

if (startDate > endDate){
       alert("Start Date should be less than End Date");
       return false;
}

【讨论】:

    【解决方案3】:

    这是工作代码

    $params['toDate'] = $this->input->post('toDate', TRUE);
    $params['fromDate'] = $this->input->post('fromDate', TRUE);$this->load->model('your_model');
    $this->load->library('form_validation');
    $this->form_validation->set_data($params);
    
    $startDate = strtotime($params['fromDate']);
    $endDate = strtotime($params['toDate']);
    
    if ($endDate >= $startDate):
        $this->form_validation->set_rules('fromDate', 'From Date', 'required|trim');
        $this->form_validation->set_rules('branchCode', 'Branch Code', 'required|trim');
    else:
        $json = array(
            "success" => false,
            "msg" => "Start date must be greater than end date"
        );
    
        echo json_encode($json);
        die();
    endif;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-18
      • 1970-01-01
      相关资源
      最近更新 更多