2017-03-09 65 views
0

當enableClientValidation設置爲true時,然後yii2-pjax小部件不會觸發ajax。只有當enableClientValidation設置爲false時,pjax才能在這裏工作。有沒有什麼辦法對每個字段(由警予)活性形式的客戶端和Ajax驗證以及pjax上(由pjax)提交按鈕activeform客戶端驗證與pjax

<?php Pjax::begin(['id'=> 'new-comment','enablePushState' => false]); ?> 

    <?php $form = ActiveForm::begin([ 
    'id' => $model->formName(), 
    'options' => ['data-pjax' => "1"] , 
    'action' => ['site/signup'], 
    'enableClientValidation' => true, 
    ]); 
    ?> 
<?= Html::submitButton('REGISTER', ['class' => 'btn btn-primary', 'name' => 'signup-button', 'id'=>'register-btn']) ?>           
</div> 
<?php ActiveForm::end(); ?> 
<?php Pjax::end(); ? 
+0

我的事,這是你想要http://stackoverflow.com/questions/28954523/yii2- - 如果沒有錯誤,那麼業務邏輯比validationUrl動作不同的動作

$.ajax({ url : encodeURI(baseUri + "site/form-validate"), data : $("#CreateForm").serialize(), dataType : 'json', type : 'POST', beforeSend : function(xhr, settings) { $this.attr("disabled","disabled"); Pace.stop(); Pace.bar.render(); }, success : function(data) { $('#CreateForm').yiiActiveForm("updateMessages", data); if($("form#CreateForm").find('.has-error').length == 0) { $.ajax({ url : encodeURI(baseUri + "site/form"), data : $("#CreateForm").serialize(), dataType : 'json', type : 'POST', beforeSend : function(xhr, settings) { }, success : function(data) { console.log(data); }, error : function(data) { }, complete : function() { $this.removeAttr("disabled"); Pace.stop(); }, }); } else { $this.removeAttr("disabled"); Pace.stop(); } }, error : function(data) { }, complete : function() { }, }); 

控制器完成ajax-form-validation-on-ajax-submitted-form?rq = 1 –

+0

我嘗試着放入validationUrl,但當enableClientValidation爲true時,Pjax請求不會自行觸發 – fortm

回答

1

,我不得不刪除Pjax調用PHP周圍,因爲活動形式否則clientValidation將失敗。

<?php $form = ActiveForm::begin([ 
       "id"=>"CreateForm", 
       'enableClientValidation' => true, 
       //'enableAjaxValidation' => true, 
       'validationUrl'=>['site/form-validate'], 
       "options" => ["enctype" =>"multipart/form-data"] 
       ] 
); ?> 

enableAjaxValidation可製成也是如此上面

目前我有沒有clientValidation這是基於validationUrl確認(validate)Pjax爲真。表單的提交按鈕在JavaScript中被外部處理,它將首先調用相同的validationUrl並使用yii activeform的updateMessages方法更新錯誤字段。

public function actionFormValidate() { 

    $model = new CreateForm(); 
    if(Yii::$app->request->isAjax && $model->load($_POST)) 
    { 
     Yii::$app->response->format = 'json'; 
     return \yii\widgets\ActiveForm::validate($model); 
    } 
}