2014-01-18 88 views
2

如您所知,Yii不會使用CHtml :: ajaxSubmitButton執行客戶端驗證。因此,谷歌和計算器很長一段時間後的支出,我發現我應該使用下面的鏈接Yii ajaxSubmitButton客戶端驗證問題

a-simple-way-to-get-yii-client-side-form-validation-run-when-submitting-by-ajax

現在,它可以執行客戶端驗證。但是,成功完成 ajax函數驗證後不會觸發。

任何想法?

更熟悉的話題,我把我的代碼在這裏:

Yii::app()->clientScript->registerCoreScript('yii'); 

Yii::app()->clientScript->registerScript('Yii Fix',";$.yii.fix = { 
     ajaxSubmit : { 
      beforeSend : function(form) { 
       return function(xhr,opt) { 
        form = $(form); 
        $._data(form[0], 'events').submit[0].handler(); 
        var he = form.data('hasError'); 
        form.removeData('hasError'); 
        return he===false; 
       } 
      }, 

      afterValidate : function(form, data, hasError) { 
       $(form).data('hasError', hasError); 
       return true; 
      } 
     } 
    };",CclientScript::POS_HEAD); 

我的形式:

$uniqid = uniqid(); 

$form = $this->beginWidget('CActiveForm', array(
'id' => 'pagescontents-add-new-contents'.$uniqid, 
'htmlOptions' => array(
    'class' => 'form-horizontal', 
    'role' => 'form' 
), 
'enableClientValidation' => true, 
'enableAjaxValidation'=>true, 
'clientOptions' => array(
    'validateOnSubmit' => true, 
    'validateOnChange'=>false, 
    'afterValidate'=>'js:$.yii.fix.ajaxSubmit.afterValidate', 
), 
)); 
//The rest of code 
... 
//Ajax submit button 

$button_uniqid = uniqid(); 
echo CHtml::ajaxSubmitButton(Messages::getMessage('ADD_NEW'), $this->createUrl('pagescontents/addPage/'), array(
      'beforeSend' => '$.yii.fix.ajaxSubmit.beforeSend("#pagescontents-add-new-contents'.$uniqid.'")', 
      'type'=>'POST', 
      'success' => "js:function(data){ 
          $('#page_modal').html(''); 
          $('.modal-backdrop').remove(); 
          $('#pageContents_list').html(data); 
         }", 

     ), 
     array(
      'class' => 'btn btn-primary', 
//   'data-dismiss' => 'modal', 
      'id' => 'deletesubmit_' . $button_uniqid 
      ) 
     ); 

回答

1

我試試你的代碼,並發現,如果你刪除行「‘enableAjaxValidation’ => true,「你的代碼會很好地工作,請檢查它,讓我知道這對你也是有用的。