0

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」形式で検証する方法は?

4

3 に答える 3

6

これを試して。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;
  }
}

「必須」の検証により、フィールドに何かを入力することが必須になります。この場合、コールバック関数は日付を比較し、開始日が開始日よりも小さい場合はフォームをさらに処理し、それ以外の場合はエラーをフラグします。

于 2013-01-25T08:10:52.573 に答える
0

一方、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;
}
于 2013-01-25T08:20:33.133 に答える