如何在CodeIgniter中按钮单击时控制发布表单数据

时间:2014-10-15 10:48:05

标签: javascript php html forms codeigniter

以前我自己就这个问题发了一个答案,相信我找到了解决方案。然而,就在今天早上,我发现我错了。它只是部分解决了。所以,我已决定删除该答案并完全编辑此帖子。

在我的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.

2 个答案:

答案 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>