2015-02-06 206 views
0

我正在论坛上工作。我想验证客户端的表单,但是我很困惑在提交表单之前验证。函数jquery返回false

我使用的功能,但是当它返回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

首先,我会确保你防止形式从提交这样

$('form').on('submit', function(e) { 
e.preventDefault(); 
... 

然后,你需要将你返回false,if块,因为你正在检查那里,如果它是空的

if(reply == ''){ 
    alert('empty'); 
    return false; 
}else{ 
    alert('not empty'); 
} 

在我增加了一个等号(=)if语句另请注意,一个=是必经之路设定值,==是比较两个值

下面是一个codepen所以你可以看到它的工作方式

http://codepen.io/anon/pen/bNYqJK

+0

对不起刚才注意到您的代码!=在里面,不过依然很牛逼他是一样的,只要确保你有正确的地方空了就可以做什么。重要的部分是确保您防止表单提交,直到它有效。 – Jordan 2015-02-06 14:45:13

+0

当写在textarea上,并提交表单它不woking第一次点击我不知道为什么,但我当我点击第二次表单submited – 2015-02-06 15:27:36