1

我正在用 codeIgniter 构建一个表单。我的表单中有一些必填字段,当必填字段为空白时,表单会转到同一页面。我想要做的是,当必填字段为空时,它会提示一个警报,说该字段是必填的。由于我是编程新手,我发现很难执行此功能。谁能告诉我我该怎么做。谢谢。仅供参考,表单的其他功能很好。

我的控制器的一部分:

function index() {
    $this->form_validation->set_rules('address', 'address', 'required');
    $this->form_validation->set_rules('area', 'area', '');
    $this->form_validation->set_rules('lat', 'latitude', 'required');
    $this->form_validation->set_rules('lng', 'longitude', 'required');          
    $this->form_validation->set_rules('subject', 'subject', 'required');
    $this->form_validation->set_rules('problem', 'problem detail', 'required');
    // validation hasn't been passed
    if ($this->form_validation->run() == FALSE) 
    {
        $this->load->view('report_view',$data );
    }
    else // passed validation proceed to post success logic
    {
           ///do something.....
    }

我的部分观点:

<?php // Change the css classes to suit your needs    
     $attributes = array('class' => '', 'id' => '');
     echo form_open_multipart('report', $attributes);
?>
<p>
    <br/>
    <label for="address">Address <span class="required">*</span></label>
    <?php echo form_error('address'); ?>
    <br />
    <input id="address" type="text" name="address"
      value="<?php echo  set_value('address'); ?>"  />
</p>

<p>
    <label for="area">Area </label>
    <?php echo form_error('area'); ?>
    <br />
    <input id="area" type="text" name="area"
      value="<?php echo set_value('area'); ?>"  />
</p>

<p>
    <label for="lat">Latitude<span class="required">*</span></label>
    <?php echo form_error('lat'); ?>
    <br />
    <input id="lat" type="text" name="lat"
      value="<?php echo  set_value('lat'); ?>"  />

<p>
    <label for="lng">Longitude<span class="required">*</span></label>
    <?php echo form_error('lng'); ?>
    <br />
    <input id="lng" type="text" name="lng"
      value="<?php echo set_value('lng'); ?>"  />
</p>

<p>
    <label for="subject">Subject:<span class="required">*</span></label>
    <?php echo form_error('subject'); ?>
    <br />
    <input id="subject" type="text" name="subject"
      value="<?php echo set_value('subject'); ?>"  />
</p>

<p>
    <label for="problem">Problem detail:<span class="required">*</span></label>
    <?php echo form_error('problem', '</div>'); ?>
    <br />
    <textarea id="problem" style="width:300px; height:80px"
      type="text" name="problem"><?php echo set_value('problem'); ?>
    </textarea>
</p>

我的模型:

function SaveForm($form_data)
{
    $this->db->insert('info', $form_data);

    if ($this->db->affected_rows() == '1')
    {
        return TRUE;
    }
    return FALSE;
}
4

4 回答 4

0

我找到了有关 jquery 和 ci 表单验证的资源。

好像第一个链接比其他链接更好..

  1. https://github.com/GuriK/CodeIgniter-jQuery-Validator
  2. http://gazpo.com/2011/07/codeigniter-jquery-form-validation/
  3. 谷歌搜索结果
于 2013-07-19T11:34:57.567 回答
0

您应该从 jquery 调用您的控制器函数,并且在调用该函数之前,请务必验证文本框是否为空提示使用if ( $("#textbox").val().length === 0 ) 0 字段为空的警报框意味着文本框没有值,并且在此之后它是空的,您可以调用您的控制器功能使用document.location.href = '<?=base_url()." YOUR_CONTROLLER/FUNCTION?>'

PS:javascript验证可能有风险

于 2013-07-19T11:50:21.613 回答
0

一个测试的例子

您的控制器文件:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Welcome extends CI_Controller {

    public function index()
    {
        $this->load->library('session');
        $this->load->helper('url');
        $this->load->library('form_validation');

        if ($this->input->server('REQUEST_METHOD') == 'POST') { // make sure it's post request

            $this->form_validation->set_error_delimiters('', '');

            $this->form_validation->set_rules('address', '<b>address</b>', 'required|xss_clean');
            $this->form_validation->set_rules('area', '<b>area</b>', 'xss_clean');
            $this->form_validation->set_rules('lat', '<b>lat</b>', 'required|xss_clean');
            $this->form_validation->set_rules('lng', '<b>lng</b>', 'required|xss_clean');
            $this->form_validation->set_rules('subject', '<b>subject</b>', 'required|xss_clean');
            $this->form_validation->set_rules('problem', '<b>problem</b>', 'required|xss_clean');

            if ($this->form_validation->run() !== FALSE) { // validation has passed

                // insert the form data into database
                $this->db->insert('info', $form_data);

                // do other stuff

                redirect('/index.php/success-page');
            } else {
                $this->session->set_userdata($this->session->flashdata_key . ':old:error', 'We have some form error. Please review them!');
            }
        }

        $this->load->view('welcome_message');
    }
}

您的视图文件:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Welcome to CodeIgniter</title>

    <style type="text/css">

    body {
        background-color: #fff;
        margin: 40px;
        font: 13px/20px normal Helvetica, Arial, sans-serif;
        color: #4F5155;
    }
    </style>
</head>
<body>
    <form method="post">

        <?php if ($this->session->flashdata('error') != '') { ?>
            <?php echo $this->session->flashdata('error');?><br />
        <?php } ?>

        <label>address</label>
        <input type="text" name="address" value="<?php echo set_value('address');?>" /><br />
        <?php if (form_error('address')) { ?><?php echo form_error('address');?><br /><?php } ?>

        <label>area</label>
        <input type="text" name="area" value="<?php echo set_value('area');?>" /><br />
        <?php if (form_error('area')) { ?><?php echo form_error('area');?><br /><?php } ?>

        <label>lat</label>
        <input type="text" name="lat" value="<?php echo set_value('lat');?>" /><br />
        <?php if (form_error('lat')) { ?><?php echo form_error('lat');?><br /><?php } ?>

        <label>lng</label>
        <input type="text" name="lng" value="<?php echo set_value('lng');?>" /><br />
        <?php if (form_error('lng')) { ?><?php echo form_error('lng');?><br /><?php } ?>

        <label>subject</label>
        <input type="text" name="subject" value="<?php echo set_value('subject');?>" /><br />
        <?php if (form_error('subject')) { ?><?php echo form_error('subject');?><br /><?php } ?>

        <label>problem</label>
        <input type="text" name="problem" value="<?php echo set_value('problem');?>" /><br />
        <?php if (form_error('problem')) { ?><?php echo form_error('problem');?><br /><?php } ?>

        <input type="submit" value="Submit">

    </form>
</body>
</html>

注意:
* 使用 $this->input->server('REQUEST_METHOD') == 'POST' 确保表单验证仅在表单提交时运行
* 如果您有表单错误,请不要显示另一个页面或重定向,只需将用户留在同一页面上以显示错误

于 2013-07-19T12:01:39.777 回答
0

您使用 javascript- 在客户端(在 HTML 页面上)验证表单字段

<script>    
function yourfunctionname()
      {
        if(document.formname.textfieldname.value=="")
            {
                alert("text field is required..");
                document.formname.textfieldname.focus();
                return false;
            }
      }
</script>
于 2013-07-19T12:05:56.857 回答