0

いくつかのフィールドの作成と編集の両方のためのフォームがあります。次のようなフォームを送信する前に、そのためにAjax検証を使用しています。

 <?php $form=$this->beginWidget('CActiveForm', array(
            'id'=>'candidates-profiles-form',
            'enableAjaxValidation'=>true,
                        'enableClientValidation'=>true,
    'clientOptions'=>array(
        'validateOnSubmit'=>true,
        'validateOnChange'=>false,
         'beforeValidate'=>"js:function(form) {         
            if((form.data('submitObject')[0].id ) == 'cancel'){
            alert('cancalclicked');
                this.validateOnSubmit = false;
        this.validateOnChange = false;
        this.beforeValidate = ''; // the problem is caused by this line
        form.submit();
        return false;

                }
                else{
                  alert('submitclicked');
                return true;

                }

        }",    
        'afterValidate'=>"js:function(form, data, hasError) {
       if(hasError) {
                alert('We have detected some input errors and has not saved your data. Please click Ok to correct them.');
                return false;
            }
            else {          
                if(confirm('We have validated your input and we are ready to save your data. Please click Ok to save or Cancel to return to input.'))
                    return true;
                else
                    return false;
            }
        }",)


)); ?> 

作成後は完全にafterValidate関数に入り、正常に動作しますが、編集後はすべてafterValidateに入っているわけではありません。ただし、beforeValidateに入って、afterValidateに到達せずにフォームを送信しています。

4

1 に答える 1

0

$ this-> PerformAjaxValidation($ model);があることを確認してください。そのアクションのためにあなたのコントローラーで。

于 2012-09-18T15:12:43.063 に答える