2015-02-06 2 views
0

Я работаю на форуме. Я хочу проверить форму на стороне клиента, но я смущен ho для проверки перед отправкой формы.on function jquery return 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(); 
... 

Затем вам нужно переместить ваше возвращение ложным в случае блока, так как вы проверяете там, если он пуст

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

Также обратите внимание на, если заявление я добавил еще один знак =, один = путь к Заданные значения, == это способ сравнить два значения

Вот является codepen, так что вы можете видеть, что это работает

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

+0

К сожалению только заметил ваш код! = в нем, но он по-прежнему работает т он же, просто убедитесь, что у вас есть то, что вы хотите сделать, если оно пустое в нужном месте. Важная часть заключается в том, что вы препятствуете отправке формы, пока она не будет действительной. – Jordan

+0

при написании на textarea и отправьте форму, не запивая при первом щелчке, я не знаю, почему, но я, когда я нажимаю вторую форму времени, отправил –