我正在使用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;
}
答案 0 :(得分:0)
我找到了有关jquery和ci表单验证的资源..
好像第一个链接比其他链接更好..
答案 1 :(得分:0)
你应该从jquery调用你的控制器函数,在调用该函数之前一定要确认文本框是否为空,通过使用if ( $("#textbox").val().length === 0 )
提示文件框为空,提示文件框是空的0表示文本框没有值在此之后,您可以使用document.location.href = '<?=base_url()." YOUR_CONTROLLER/FUNCTION?>'
P.S:javascript验证可能有风险
答案 2 :(得分: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-&gt; input-&gt; server('REQUEST_METHOD')=='POST'以确保表单验证仅在表单提交时运行
*如果您有表单错误,请不要显示其他页面或重定向,只需将用户留在同一页面上即可显示错误
答案 3 :(得分:0)
您可以使用javascript -
验证客户端(在HTML页面上)的表单字段<script>
function yourfunctionname()
{
if(document.formname.textfieldname.value=="")
{
alert("text field is required..");
document.formname.textfieldname.focus();
return false;
}
}
</script>