我正在论坛上工作。我想在客户端验证表单,但我很困惑,在提交表单之前验证。
我在函数上使用但是当它返回false时我想向用户显示一些内容。
以下是我的观点:
<?php
if($this->session->userdata('email')){
echo form_open('forum/reply');//session form start here
?>
<?php echo validation_errors(); ?>
<div class="media">
<div class="media-left media-middle pull-left">
<a href="#">
<img class="media-object" src="<?php echo base_url('assets/pics') ?>/<?php echo $this->session->userdata('profile_pic') ?>" alt="<?php echo $row->first_name . nbs(2) . $row->last_name ?>">
</a>
</div>
<div class="media-body">
<textarea name="message" class="text_reply"></textarea>
<?php
$submit = array(
'name' => 'reply' ,
'value' => 'reply' ,
'id' => 'reply' ,
'class'=> 'btn btn-primary'
);
echo form_hidden('id',$id);
echo form_submit($submit);
echo form_close ();?>
</div>
</div>
<?php }//session form ends here
?>
Javascript代码:
$('form').on('submit', function() {
var reply = $ ('.text_reply').val();
if(reply != ''){
}else{
return false;
}
});
我的控制器:
public function reply(){
$this->form_validation->set_rules('reply', 'Answer', 'required');
if ($this->form_validation->run() == FALSE)
{
$this->topic();
}
else
{
$data['topic_id'] = $this->input->post('id');
$data['reply_text'] = $this->input->post('message',TRUE);
$data['user_id'] = $this->session->userdata('u_id');
$data['reply_date'] = date('M/d/y');
$query = $this->mod_forum->reply($data);
if ($query) {
$this->session->set_flashdata('t_id', $this->input->post('id'));
redirect('forum/topic');
} else {
echo 'something woring please contact admin.';
}
}
}
答案 0 :(得分:0)
首先,我要确保您阻止表单提交
$('form').on('submit', function(e) {
e.preventDefault();
...
然后你需要将你的返回false移动到if块,因为你在那里检查它是否为空
if(reply == ''){
alert('empty');
return false;
}else{
alert('not empty');
}
另外注意在if语句中我添加了另一个=符号,一个=是设置值的方式,==是比较两个值的方式
这是一个codepen,所以你可以看到它正常工作