以前我自己就这个问题发了一个答案,相信我找到了解决方案。然而,就在今天早上,我发现我错了。它只是部分解决了。所以,我已决定删除该答案并完全编辑此帖子。
在我的CodeIgniter应用程序中,我有以下视图页面 - meal_add.php
,并且有一个表单。该表单下方有一个提交按钮。表单方法应该是"post"
。如果单击提交按钮,数据将保存在数据库中。代码如下:
<form action="javascript:checkTime();" method="post">
<fieldset>
<legend id="add_employee_legend">Add Meal Information</legend>
<div>
<label id= "emp_id_add_label">Employee ID:</label>
<input type="text" name="emp_id" id = "employee_id_add" placeholder="Employee ID" required="1"/>
</div>
<br>
<div>
<label id= "is_guest_add_label">Guests?</label>
<input type="checkbox" name ="is_guest_checkbox" class ="guestcheck" checked="checked" value="1" onchange="valueChanged()"/>
</div>
<br>
<div id = "guestnum">
<label id= "num_of_guest_add_label">No. of Guests:</label>
<input type="text" name="num_of_guest" id = "num_of_guest_add" placeholder='0'/>
</div>
<div>
<label id= "remarks_add_label">Remarks:</label>
<textarea rows="1" cols="20" style="margin-left: 35px"></textarea>
</div>
<input type="submit" name="submit" id = "meal_info_submit" value="Save Meal Information"/>
<button id = "cancel_button" onclick="location.href='<?php echo base_url();?>index.php/admin_logins/meal'">Cancel</button>
</fieldset>
</form>
现在,我想在点击提交按钮时检查某个条件。根据检查,我将允许提交数据和重定向页面。所以我的JavaScript函数如下:
<script>
function checkTime()
{
var today = new Date();
var hour = today.getHours();
if(hour < '12')
{
location.href='<?php echo base_url();?>index.php/meals/insert_meal_db';
}
else
{
alert("You can't place an order after 12 pm.");
location.href='<?php echo base_url();?>index.php/admin_logins/meal';
}
}
</script>
这个位工作正常 - 每当我在12点之后尝试提交数据时,会发出一条警告信息说我不能在下午12点之后下订单,暂停我的数据提交并重定向到另一个页面。但是,当它在下午12点之前,数据应该在点击时提交,即表格方法应该发布。但似乎数据未在点击时提交,表单方法"post"
根本不起作用。我得到的只是数据库中的简单0。
我的控制器插入方法 -
public function insert_meal_db()
{
date_default_timezone_set('Asia/Dacca');
$mdata['emp_id'] = $this->input->post('emp_id');
$mdata['is_guest'] = $this->input->post('is_guest');
$mdata['num_of_guest'] = $this->input->post('num_of_guest');
$mdata['remarks'] = $this->input->post('remarks');
if($mdata['num_of_guest'] == 0)
{
$mdata['bill'] = 35.00;
}
else
{
$mdata['bill'] = 35.00 + (35.00 * $mdata['num_of_guest']);
}
$res = $this->meal_model->insert_meal($mdata);
if($res)
{
$this->session->set_flashdata('message','Meal information added successfully');
header('location:'.base_url()."index.php/meals/".$this->index());
}
}
请注意,$mdata['bill']
并非来自$this->input->post()
,而是来自计算。所以我在我的数据库中根据计算获得了$ mdata [&#39; bill&#39;]`的数据,而不是0。但对于其他列,我得到普通的0。
我的模型插入方法 -
//To add a new meal to the database
public function insert_meal($data)
{
return $this->db->insert('meal', $data);
}
我的表名是meal
,数据库是MySQL,这里是表结构:
Column Name Data Type
id int PK
emp_id varchar(15) NOT NULL
is_guest int NOT NULL
num_of_guest int
bill int NOT NULL
remarks text
有趣的是 - 虽然我的emp_id
列是VARCHAR NOT NULL
列,但保存在那里的数据为0.
答案 0 :(得分:1)
为了在提交表单之前检查验证,您需要执行以下任务:
<form id="form" onSubmit="return checkSubmit();" action="#">
使用以下方式进行javascript表单验证:
function checkSubmit(){
if (validationCorrect()) {
$('#form').submit();
}
}
希望你有这个概念。
答案 1 :(得分:0)
如果时间更长
,您似乎需要停止提交表单<input type="submit" name="submit" id = "meal_info_submit" onclick="return checkTime()" value="Save Meal Information"/>
Javascript函数就像
<script>
function checkTime()
{
var today = new Date();
var hour = today.getHours();
if(hour > '12')
{
alert("You can't place an order after 12 pm.");
location.href='<?php echo base_url();?>index.php/admin_logins/meal';
} else {
return true;
}
}
</script>