Yii Framework Forum: Chrome И Onsubmit - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Chrome И Onsubmit Rate Topic: -----

#1 User is offline   tuschkan 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 122
  • Joined: 20-April 11
  • Location:Kiev, Ukraine

Posted 18 December 2012 - 06:39 PM

Кликаю enter после ввода комментария в textare и произвожу отправку содержимого через Ajax. Происходит обновления списка комментариев по Ajax.

В FF все корректно, а в Chrome и Opera происходит отправка формы с последующей перегрузкой страницы.
В чем же может быть проблема?

фрагмент формы:
return array(
//    'action'     => '/comments/comment/add',
    'activeForm' => array(
        'id'                   => 'comment-form',
        'class'                => 'CActiveForm',
        'htmlOptions'          => array(
            'enctype' => 'multipart/form-data',
        ),
        'enableAjaxValidation' => true,
        'clientOptions'=>array(
            'validateOnSubmit'=>true,
            'validateOnChange'=>false,
            'onSubmit'=>'return false',
        ), 

    ),
    'elements'   => array(

        'text'       => array(
            'type' => 'textarea',
            'id'=>'commentForm',
            'onfocus'=>'if (this.value == \'Оставить комментарий\') {this.value = \'\'}',
            'onblur'=>'if (this.value == \'\') {this.value = \'Оставить комментарий\';}',
            'onkeypress'=>'if (event.keyCode == 13) {submitForm(this);}'



ajax:
        function submitForm(element) {
            var $form = $(element).closest('form');
            var data = $form.serialize();

            jQuery.ajax({
                'url':'<?php echo Yii::app()->createUrl("/comments/comment/AddCommentViaAjax"); ?>',
                'cache':false,
                'data':data,
                'success':function(html){
                    jQuery("div#comments_data").html(html);
                }
            });

           return false; 
        }

0

#2 User is offline   Charger 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 317
  • Joined: 03-September 11

Posted 23 December 2012 - 02:20 AM

Опера и хром видимо считают, что отсутствие в форме кнопки submit не является препятствием для его совершения.
IMHO вы не на то событие повесили event. Нужно было на onsubmit делать
return submitForm(this); 

Т.к. submitForm возвращает false, то получается "return false;" и собственно самого сабмита браузер не произведет. Но если будет отключен JS то функция не сможет ничего вернуть, то тогда он может и произойдет, по идее это позволяет форме работать даже с отключенным JS.

В общем что бы сабмита не произошло, onsubmit должен возвращать false. Но обработку сабмита надо вешать именно на его событие, а не нажатие "Enter" в каком либо поле.
Правда может произойти такое, что браузер, не найдет элемента "<input type='submit'" и не будет вызывать событие, в таком случае HTML кнопку сабмита нужно добавить на страницу, но её можно сделать невидимой.
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users